home *** CD-ROM | disk | FTP | other *** search
/ Revista CD Expert 8 / Revista CD Expert nº 08 CD1.iso / Utilitarios / Programacao / MS-DOS Interrupt List / Inter60b / INTERRUP.H < prev    next >
Encoding:
Text File  |  1999-01-03  |  260.5 KB  |  6,914 lines

  1. Interrupt List, part 8 of 18
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
  3. --------D-215F00-----------------------------
  4. INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
  5.     AX = 5F00h
  6.     BL = redirection type
  7.         03h printer
  8.         04h disk drive
  9. Return: CF set on error
  10.         AX = error code (see #01680 at AH=59h/BX=0000h)
  11.     CF clear if successful
  12.         BH = redirection state
  13.         00h off
  14.         01h on
  15. Note:    calls INT 2F/AX=111Eh with AX on top of the stack
  16. SeeAlso: AX=5F01h,INT 2F/AX=111Eh
  17. --------D-215F01-----------------------------
  18. INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
  19.     AX = 5F01h
  20.     BL = redirection type
  21.         03h printer
  22.         04h disk drive
  23.     BH = redirection state
  24.         00h off
  25.         01h on
  26. Return: CF set on error
  27.         AX = error code (see #01680 at AH=59h/BX=0000h)
  28.     CF clear if successful
  29. Notes:    when redirection is off, the local device (if any) rather than the
  30.       remote device is used
  31.     calls INT 2F/AX=111Eh with AX on top of the stack
  32. SeeAlso: AX=5F00h,INT 2F/AX=111Eh,INT 60/AX=0002h
  33. --------D-215F02-----------------------------
  34. INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
  35.     AX = 5F02h
  36.     BX = zero-based redirection list index
  37.     CX = driver signature
  38.         0000h LANtastic
  39.         4E57h ('NW') NetWare
  40.     DS:SI -> 16-byte buffer for ASCIZ local device name or drive letter
  41.           followed by colon
  42.     ES:DI -> 128-byte buffer for ASCIZ network name
  43. Return: CF clear if successful
  44.         BH = device status
  45.         00h valid
  46.         01h invalid
  47.         02h valid (connected from inside Windows for Workgroups v3.11)
  48.         BL = device type
  49.         03h printer
  50.         04h disk drive
  51.         CX = user data previously set with AX=5F03h
  52.         DS:SI and ES:DI buffers filled
  53.         DX,BP destroyed
  54.     CF set on error
  55.         AX = error code (01h,12h) (see #01680 at AH=59h/BX=0000h)
  56. Notes:    this function is passed through to INT 2F/AX=111Eh by the DOS kernel
  57.     error code 12h is returned if BX is greater than the size of the list
  58.     also supported by Banyan VINES, PC-NFS, LANtastic, and 10NET
  59.     supported by LapLink RemoteAccess but returns the local drive letter;
  60.       the remote drive letter can be obtained with INT 2F/AX=Cxxxh
  61.       (see INT 2F/AX=C000h"LapLink")
  62.     the returned device name may or may not include a colon, depending on
  63.       the network software
  64. SeeAlso: AX=5F03h,AX=5F46h,INT 2F/AX=111Eh,INT 2F/AX=C000h"LapLink"
  65. --------D-215F03-----------------------------
  66. INT 21 - DOS 3.1+ network - REDIRECT DEVICE
  67.     AX = 5F03h
  68.     BL = device type
  69.         03h printer
  70.         04h disk drive
  71.     CX = user data to save
  72.         0000h for LANtastic
  73.         4E57h ("NW") for NetWare 4.0 requester
  74.     DS:SI -> ASCIZ local device name (16 bytes max)
  75.     ES:DI -> ASCIZ network name + ASCIZ password (128 bytes max total)
  76. Return: CF clear if successful
  77.     CF set on error
  78.         AX = error code (01h,03h,05h,08h,0Fh,12h) (see #01680 at AH=59h)
  79. Notes:    if device type is disk drive, DS:SI must point at either a null string
  80.       or a string consisting the drive letter followed by a colon; if a
  81.       null string, the network attempts to access the destination without
  82.       redirecting a local drive
  83.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  84.     also supported by Banyan VINES, LANtastic, and 10NET
  85. SeeAlso: AX=5F02h,AX=5F04h,INT 2F/AX=111Eh,INT 60/AX=0002h
  86. --------D-215F04-----------------------------
  87. INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
  88.     AX = 5F04h
  89.     DS:SI -> ASCIZ local device name or path
  90.     CX = 4E57h ("NW") for NetWare 4.0 requester
  91. Return: CF clear if successful
  92.     CF set on error
  93.         AX = error code (01h,03h,05h,08h,0Fh,12h) (see #01680 at AH=59h)
  94. Notes:    the DS:SI string must be either a local device name, a drive letter
  95.       followed by a colon, or a network directory beginning with two
  96.       backslashes
  97.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  98.     also supported by Banyan VINES, LANtastic, and 10NET
  99.     for NetWare, if only a server name is specified (i.e. "\\SERVER"),
  100.       the connection to that server will be closed
  101. SeeAlso: AX=5F03h,INT 2F/AX=111Eh,INT 60/AX=0003h
  102. --------D-215F05-----------------------------
  103. INT 21 - DOS 4.0+ network - GET EXTENDED REDIRECTION LIST ENTRY
  104.     AX = 5F05h
  105.     BX = redirection list index
  106.     DS:SI -> buffer for ASCIZ source device name
  107.     ES:DI -> buffer for destination ASCIZ network path
  108. Return: CF set on error
  109.         AX = error code (see #01680 at AH=59h/BX=0000h)
  110.     CF clear if successful
  111.         AX = server's network process ID handle (10NET)
  112.         BH = device status flag (bit 0 clear if valid)
  113.         BL = device type (03h if printer, 04h if drive)
  114.         CX = stored parameter value (user data) from AX=5F03h
  115.         BP = NETBIOS local session number
  116.         DS:SI buffer filled
  117.         ES:DI buffer filled
  118. Notes:    the local session number allows sharing the redirector's session number
  119.     if an error is caused on the NETBIOS LSN, the redirector may be unable
  120.       to correctly recover from errors
  121.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  122.     supported by DR DOS 5.0
  123.     also supported by 10NET v5.0
  124. SeeAlso: AX=5F06h"Network",INT 2F/AX=111Eh
  125. --------O-215F05-----------------------------
  126. INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
  127.     AX = 5F05h
  128.     DL = drive number (0=A:)
  129.     DS:SI -> ASCIZ name of the object to map the drive to
  130. Return: CF set on error
  131.         AX = error code (see #01680 at AH=59h/BX=0000h)
  132.     CF clear if successful
  133. SeeAlso: AX=5F06h"STARLITE",INT 60/AX=0002h
  134. --------N-215F06-----------------------------
  135. INT 21 U - Network - GET FULL REDIRECTION LIST
  136.     AX = 5F06h
  137.     ???
  138. Return: ???
  139. Notes:    similar to AX=5F02h and AX=5F05h, but also returns redirections
  140.       excluded from those calls for various reasons
  141.     calls INT 2F/AX=111Eh with AX on top of the stack
  142. SeeAlso: AX=5F05h"DOS",INT 2F/AX=111Eh
  143. --------O-215F06-----------------------------
  144. INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
  145.     AX = 5F06h
  146.     DL = drive to be unmapped (0=A:)
  147. Return: CF set on error
  148.         AX = error code (see #01680 at AH=59h/BX=0000h)
  149.     CF clear if successful
  150. SeeAlso: AX=5F05h"STARLITE",INT 60/AX=0003h
  151. --------D-215F07-----------------------------
  152. INT 21 - DOS 5+ - ENABLE DRIVE
  153.     AX = 5F07h
  154.     DL = drive number (0=A:)
  155. Return: CF clear if successful
  156.     CF set on error
  157.         AX = error code (0Fh) (see #01680 at AH=59h/BX=0000h)
  158. Notes:    simply sets the "valid" bit in the drive's CDS
  159.     this function is not supported by Novell DOS 7 through at least
  160.       Update 4, but support was added by Update 13
  161. SeeAlso: AH=52h,AX=5F08h"DOS"
  162. --------O-215F07-----------------------------
  163. INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
  164.     AX = 5F07h
  165.     DS:SI -> ASCIZ name of object to offer to network
  166.     ES:DI -> ASCIZ name under which object will be known on the network
  167.         MUST begin with three slashes
  168. Return: CF set on error
  169.         AX = error code (see #01680 at AH=59h/BX=0000h)
  170.     CF clear if successful
  171. SeeAlso: AX=5F08h"STARLITE"
  172. --------D-215F08-----------------------------
  173. INT 21 - DOS 5+ - DISABLE DRIVE
  174.     AX = 5F08h
  175.     DL = drive number (0=A:)
  176. Return: CF clear if successful
  177.     CF set on error
  178.         AX = error code (0Fh) (see #01680 at AH=59h/BX=0000h)
  179. Notes:    simply clears the "valid" bit in the drive's CDS
  180.     this function is not supported by Novell DOS 7 through at least
  181.       Update 4, but support was added by Update 13
  182. SeeAlso: AH=52h,AX=5F07h"DOS"
  183. --------O-215F08-----------------------------
  184. INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
  185.     AX = 5F08h
  186.     DS:SI -> ASCIZ network name (not local name) of object to unshare
  187. Return: CF set on error
  188.         AX = error code (see #01680 at AH=59h/BX=0000h)
  189.     CF clear if successful
  190. SeeAlso: AX=5F07h"STARLITE"
  191. --------O-215F09-----------------------------
  192. INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
  193.     AX = 5F09h
  194.     DS:DX -> ASCIZ name of the device driver to attach to
  195. Return: CF set on error
  196.         AX = error code (see #01680 at AH=59h/BX=0000h)
  197.     CF clear if successful
  198. Note:    the STARLITE distributed file system can attach to multiple networks
  199.       simultaneously
  200. SeeAlso: AX=5F0Ah
  201. --------O-215F0A-----------------------------
  202. INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
  203.     AX = 5F0Ah
  204.     DS:DX -> ASCIZ name of device driver to detach from
  205. Return: CF set on error
  206.         AX = error code (see #01680 at AH=59h/BX=0000h)
  207.     CF clear if successful
  208. SeeAlso: AX=5F09h
  209. --------N-215F30-----------------------------
  210. INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
  211.     AX = 5F30h
  212. Return: AX = version (AH=major,AL=minor)
  213. --------N-215F32-----------------------------
  214. INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
  215.     AX = 5F32h
  216.     BX = handle
  217.     CX = size of _PIPEINFO structure
  218.     DX = level (must be 0001h)
  219.     DS:SI -> _PIPEINFO structure (see #01701)
  220. Return: CF clear if successful
  221.         _PIPEINFO structure filled in
  222.     CF set on error
  223.         AX = error code
  224. Note:    this function was introduced by LAN Manager but is also supported by
  225.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  226.       Machines, and others
  227. SeeAlso: AX=5F33h,AX=5F34h
  228.  
  229. Format of Named Pipes _PIPEINFO structure:
  230. Offset    Size    Description    (Table 01701)
  231.  00h    WORD    size of outgoing buffer
  232.  02h    WORD    size of incoming buffer
  233.  04h    BYTE    maximum number of instances allowed
  234.  05h    BYTE    current number of instances
  235.  06h    BYTE    length of the name (including terminating NUL)
  236.  07h  N BYTEs    name
  237. --------N-215F33-----------------------------
  238. INT 21 u - Named Pipes - LOCAL DosQNmPHandState
  239.     AX = 5F33h
  240.     BX = handle
  241. Return: CF clear if successful
  242.         AH = pipe mode bit mask (see #01702)
  243.         AL = maximum number of instances
  244.     CF set on error
  245.         AX = error code
  246. Note:    this function was introduced by LAN Manager but is also supported by
  247.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  248.       Machines, and others
  249. SeeAlso: AX=5F32h,AX=5F34h
  250.  
  251. Bitfields for Named Pipes pipe mode:
  252. Bit(s)    Description    (Table 01702)
  253.  7    set if nonblocking, clear if blocking
  254.  6    set if server end, clear if client end
  255.  2    set if write in message mode, clear if write in byte mode
  256.  0    set if read in message mode, clear if read in byte mode
  257. --------N-215F34-----------------------------
  258. INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
  259.     AX = 5F34h
  260.     BX = handle
  261.     CX = pipe mode bit mask
  262.         bit 15: set if nonblocking, clear if blocking
  263.         bit     8: set if read in message mode, clear if read in byte mode
  264. Return: CF clear if successful
  265.     CF set if error
  266.         AX = error code
  267. Note:    this function was introduced by LAN Manager but is also supported by
  268.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  269.       Machines, and others
  270. SeeAlso: AX=5F32h,AX=5F33h,AX=5F36h
  271. --------N-215F35-----------------------------
  272. INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
  273.     AX = 5F35h
  274.     BX = handle
  275.     CX = buffer length
  276.     DS:SI -> buffer
  277. Return: CF set on error
  278.         AX = error code
  279.     CF clear if successful (LAN Manager v1-v2)
  280.     AX = 0000h if successful (LAN Manager 3.x)
  281.     ---if successful---
  282.         CX = bytes read
  283.         SI = bytes left in the pipe
  284.         DX = bytes left in the current message
  285.         AX = pipe status (v1-v2) (see #01703)
  286.         DI = pipe status (v3.x)
  287. Note:    this function was introduced by LAN Manager but is also supported by
  288.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  289.       Machines, and others
  290. SeeAlso: AX=5F38h,AX=5F39h,AX=5F51h
  291.  
  292. (Table 01703)
  293. Values for pipe status:
  294.  0001h    disconnected
  295.  0002h    listening
  296.  0003h    connected
  297.  0004h    closing
  298. --------N-215F36-----------------------------
  299. INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
  300.     AX = 5F36h
  301.     BX = handle
  302.     CX = in buffer length
  303.     DS:SI -> in buffer
  304.     DX = out buffer length
  305.     ES:DI -> out buffer
  306. Return: CF clear if successful
  307.         CX = bytes read
  308.     CF set on error
  309.         AX = error code
  310. Note:    this function was introduced by LAN Manager but is also supported by
  311.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  312.       Machines, and others
  313. SeeAlso: AX=5F34h,AX=5F37h
  314. --------N-215F37-----------------------------
  315. INT 21 u - Named Pipes - DosCallNmPipe
  316.     AX = 5F37h
  317.     DS:SI -> DosCallNmPipe stack frame (see #01704)
  318. Return: CF clear if successful
  319.         CX = bytes read
  320.     CF set on error
  321.         AX = error code
  322. Note:    this function was introduced by LAN Manager but is also supported by
  323.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  324.       Machines, and others
  325. SeeAlso: AX=5F36h,AX=5F38h
  326.  
  327. Format of Named Pipes DosCallNmPipe stack frame:
  328. Offset    Size    Description    (Table 01704)
  329.  00h    DWORD    timeout
  330.  04h    DWORD    -> bytes read WORD (not used!)
  331.  08h    WORD    out buffer length
  332.  0Ah    DWORD    address of out buffer
  333.  0Eh    WORD    in buffer length
  334.  10h    DWORD    address of in buffer
  335.  14h    DWORD    address of pipe name
  336. --------N-215F38-----------------------------
  337. INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
  338.     AX = 5F38h
  339.     DS:DX -> pipe name
  340.     BX:CX = timeout value
  341. Return: CF clear if successful
  342.     CF set if error
  343.         AX = error code
  344. Notes:    when a client gets a return code of ERROR_PIPE_BUSY on attempting to
  345.       open a pipe, it should issue this call to wait until the pipe
  346.       instance becomes available again; on return from this call, the
  347.       client must attempt to open the pipe once again
  348.     this function was introduced by LAN Manager but is also supported by
  349.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  350.       Machines, and others
  351. SeeAlso: AX=5F37h,AX=5F39h
  352. --------N-215F39-----------------------------
  353. INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
  354.     AX = 5F39h
  355.     BX = handle
  356.     CX = buffer length
  357.     DS:DX -> buffer
  358. Return: CF clear if successful
  359.         CX = bytes read
  360.     CF set if error
  361.         AX = error code
  362. Notes:    this function was introduced by LAN Manager but is also supported by
  363.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  364.       Machines, and others
  365.     not documented in the LAN Manager Toolkit
  366. SeeAlso: AX=5F35h,AX=5F3Ah,INT 2F/AX=1186h
  367. --------N-215F3A-----------------------------
  368. INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
  369.     AX = 5F3Ah
  370.     BX = handle
  371.     CX = buffer length
  372.     DS:DX -> buffer
  373. Return: CF clear if successful
  374.         CX = bytes written
  375.     CF set if error
  376.         AX = error code
  377. Notes:    this function was introduced by LAN Manager but is also supported by
  378.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  379.       Machines, and others
  380.     not documented in the LAN Manager Toolkit
  381. SeeAlso: AX=5F39h,AX=5F3Bh,INT 2F/AX=118Fh
  382. --------N-215F3B-----------------------------
  383. INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
  384.     AX = 5F3Bh
  385.     BX = handle
  386.     CX = handle_info_1 structure length or sizeof DWORD
  387.     DI = parameter number to set
  388.         0000h all
  389.         0001h number of milliseconds
  390.         0002h number of characters
  391.     DS:DX -> handle_info_1 structure (DI=0000h) (see #01705)
  392.         or DWORD (DI=0001h or 0002h)
  393.     SI = level of information (0001h)
  394. Return: CF clear if successful
  395.         CX = total bytes available
  396.     CF set if error
  397.         AX = error code
  398. SeeAlso: AX=5F3Ch
  399.  
  400. Format of LAN Manager handle_info_1 structure:
  401. Offset    Size    Description    (Table 01705)
  402.  00h    DWORD    number of milliseconds which workstation collects data before
  403.           it sends the data to the named pipe
  404.  04h    DWORD    number of characters which workstation collects before it
  405.           sends the data to the named pipe
  406. --------N-215F3C-----------------------------
  407. INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
  408.     AX = 5F3Ch
  409.     BX = handle
  410.     CX = length of handle_info_1 structure
  411.     DS:DX -> handle_info_1 structure (see #01705)
  412.     SI = level of information (must be 0001h)
  413. Return: CF clear if successful
  414.         CX = total bytes available
  415.     CF set if error
  416.         AX = error code
  417. SeeAlso: AX=5F3Bh
  418. --------N-215F3D-----------------------------
  419. INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
  420.     AX = 5F3Dh
  421.     ???
  422. Return: ???
  423. --------N-215F3E-----------------------------
  424. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
  425.     AX = 5F3Eh
  426.     ???
  427. Return: ???
  428. Note:    This function is not documented anywhere in the LAN Manager 2.x Toolkit
  429.       but was documented in LAN Manager 1.x manuals.
  430. --------N-215F3F-----------------------------
  431. INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
  432.     AX = 5F3Fh
  433.     CX = api number
  434.     ES:DI -> data descriptor
  435.     ES:SI -> parameter descriptor
  436.     ES:DX -> auxiliary descriptor (if DX <> 0)
  437.     ???
  438. Return: ???
  439. --------N-215F40-----------------------------
  440. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
  441.     AX = 5F40h
  442.     DS:DX -> NetMessageBufferSend parameter structure (see #01706)
  443. Return: AX = error code
  444.  
  445. Format of LAN Manager NetMessageBufferSend parameter structure:
  446. Offset    Size    Description    (Table 01706)
  447.  00h    DWORD    -> recipient name (name for specific user, name* for domain
  448.               wide name, * for broadcast)
  449.  04h    DWORD    -> buffer
  450.  08h    WORD    length of buffer
  451. --------N-215F41-----------------------------
  452. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
  453.     AX = 5F41h
  454.     BL = level of detail (0000h, 0001h or 0002h)
  455.     CX = buffer length
  456.     ES:DI -> buffer of service_info_0, service_info_1, or service_info_2
  457.         (see #01707,#01708,#01709)
  458. Return: CF clear if successful
  459.         CX = entries read
  460.         DX = total available
  461.     CF set on error
  462.         AX = error code
  463.  
  464. Format of LAN Manager service_info_0 structure:
  465. Offset    Size    Description    (Table 01707)
  466.  00h 16 BYTEs    name
  467. SeeAlso: #01708,#01709
  468.  
  469. Format of service_info_1 structure:
  470. Offset    Size    Description    (Table 01708)
  471.  00h 16 BYTEs    name
  472.  10h    WORD    status bitmask (see #01710)
  473.  12h    DWORD    status code (see #01711)
  474.         (also see Microsoft LAN Manager Programmer's Reference)
  475.  16h    WORD    process id
  476. SeeAlso: #01707,#01709
  477.  
  478. Format of service_info_2 structure:
  479. Offset    Size    Description    (Table 01709)
  480.  00h 16 BYTEs    name
  481.  10h    WORD    status bitmask (see #01710)
  482.  12h    DWORD    status code (see #01711)
  483.  16h    WORD    process id
  484.  18h 64 BYTEs    text
  485. SeeAlso: #01707,#01708
  486.  
  487. Bitfields for LAN Manager status bitmask:
  488. Bit(s)    Description    (Table 01710)
  489.  0,1    00 uninstall
  490.         01 install pending
  491.         10 uninstall pending
  492.         11 installed
  493.  2,3    00 active
  494.         01 Continue pending
  495.         10 Pause pending
  496.         11 paused
  497.  4    uninstallable
  498.  5    pausable
  499.  8    disk redirector paused
  500.  9    spooled device redirector paused (printing)
  501.  10    communication device redirector paused
  502.  
  503. (Table 01711)
  504. Values for LAN Manager status code:
  505.  high word
  506.     3051 Bad parameter value
  507.     3052 A parameter is missing
  508.     3053 An unknown parameter was specified
  509.     3054 The resource is insufficient
  510.     3055 Configuration is faulty
  511.     3056 An MS-DOS or MS OS/2 error occured
  512.     3057 An internal error occured
  513.     3058 An ambiguous parameter name was given
  514.     3059 A duplicate parameter exists
  515.     3060 The service was terminated by NetSeviceControl when it did not respond
  516.     3061 The service program file could not be executed
  517.     3062 The subservice failed to start
  518.     3063 There is a conflict in the value or use of these parameters
  519.     3064 There is a problem with the file
  520.  low word
  521.     3070 There is insufficient memory
  522.     3071 There is insufficeient disk space
  523.     3072 Unable to create thread
  524.     3073 Unable to create process
  525.     3074 A security failure occured
  526.     3075 There is bad or missing default path
  527.     3076 Network software is not installed
  528.     3077 Server software is not installed
  529.     3078 The server could not access the UAS database
  530.     3079 The action requires user-level security
  531.     3080 The log directory is invalid
  532.     3081 The LAN group specificed could not be used
  533.     3082 The computername is being used as a message alias on another computer
  534.     3083 The workstation failed to announce the servername
  535.     3084 The user accounts system is not configured properly
  536. --------N-215F42-----------------------------
  537. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
  538.     AX = 5F42h
  539.     DH = opcode
  540.         00h interrogate status
  541.         01h pause
  542.         02h continue
  543.         03h uninstall
  544.     DL = argument
  545.         01h disk resource
  546.         02h print resource
  547.         04h communications resource (not implemented for DOS)
  548.     ES:BX -> NetServiceControl parameter structure (see #01712)
  549. Return: CF clear if successful
  550.     CF set on error
  551.         AX = error code
  552.  
  553. Format of LAN Manager NetServiceControl parameter structure:
  554. Offset    Size    Description    (Table 01712)
  555.  00h    DWORD    -> service name
  556.  04h    WORD    result buffer size
  557.  06h    DWORD    -> result buffer as service_info_2 structure
  558. --------N-215F43-----------------------------
  559. INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
  560.     AX = 5F43h
  561.     BX = handle of remote print job
  562.     CX = size of PRIDINFO struture
  563.     ES:DI -> PRIDINFO structure (see #01713)
  564. Return: CF clear if successful
  565.         PRIDINFO filled in
  566.     CF set on error
  567.         AX = error code
  568.  
  569. Format of LAN Manager PRIDINFO structure:
  570. Offset    Size    Description    (Table 01713)
  571.  00h    WORD    job id
  572.  02h 16 BYTEs    server name
  573.  12h 13 BYTEs    queue name
  574.  1Fh  1 BYTE    pad
  575. --------N-215F44-----------------------------
  576. INT 21 - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
  577.     AX = 5F44h
  578.     BX = information level (00h, 01h, or 0Ah)
  579.     CX = buffer size
  580.     DX = 0000h
  581.     ES:DI -> buffer in which to store info (see #01714,#01715,#01716),
  582.           including any returned strings
  583. Return: AX = error code
  584.     DX = amount of buffer required, unchanged if supplied buffer large
  585.           enough to hold data
  586. SeeAlso: AX=5F45h,AX=5F49h
  587.  
  588. Format of LAN Manager wksta_info_0 structure:
  589. Offset    Size    Description    (Table 01714)
  590.  00h    WORD     reserved (0)
  591.  02h    DWORD     reserved (0)
  592.  06h    DWORD     -> path to computer's LANMAN directory
  593.  0Ah    DWORD     -> computername of the workstation
  594.  0Eh    DWORD     -> username of user logged onto workstation
  595.  12h    DWORD     -> domain to which workstation belongs
  596.  16h    WORD     LAN Manager version number (2 bytes, Major, Minor)
  597.  18h    DWORD     reserved (0)
  598.  1Ch    WORD     number of seconds workstation waits for resource availability
  599.  1Eh    DWORD     delay (in millsecs) before sending data to resource
  600.  22h    WORD     reserved (0)
  601.  24h    WORD     reserved (0)
  602.  26h    WORD     ???
  603.  28h    WORD     number of seconds to maintain an inactive connection
  604.  2Ah    WORD     number of seconds an inactive search continues
  605.  2Ch    WORD     threads to dedicate to network (not supported in MSDOS)
  606.  2Eh    WORD     number of simultaneous commands sent to network
  607.  30h    WORD     reserved6 (must be 0)
  608.  32h    WORD     number of internal buffers
  609.  34h    WORD     size (in bytes) of each internal buffer
  610.  36h    WORD     max size (in bytes) of an internal cache buffer (not MSDOS)
  611.  38h    WORD     seconds before disconnecting inactive session (not MSDOS)
  612.  3Ah    WORD     size (in bytes) of an internal error buffer (not MSDOS)
  613.  3Ch    WORD     number of clients that can receive alert messages (not MSDOS)
  614.  3Eh    WORD     number of services that can be started on workstation
  615.  40h    WORD     max size (in kilobytes) of error log (not MSDOS)
  616.  42h    WORD     number of secs before closing inactive print jobs (not MSDOS)
  617.  44h    WORD     number of character buffers for workstation
  618.  46h    WORD     max size (in bytes) of character buffer
  619.  48h    DWORD     -> name of server that validated logon
  620.  4Ch    DWORD     -> workstation heuristics
  621.  50h    WORD     number of mailslots allowed
  622. Note:    pointers to strings are set to 0000h:0000h if there is insufficient
  623.       space in the buffer to hold them
  624. SeeAlso: #01715,#01716
  625.  
  626. Format of LAN Manager wksta_info_1 structure:
  627. Offset    Size    Description    (Table 01715)
  628.  00h 82 BYTEs    wksta_info_0 structure (see #01714)
  629.  52h    DWORD     -> name of domain which user is logged on to
  630.  56h    DWORD     -> all domains in which computer is enlisted
  631.  5Ah    WORD     number of buffers to allocate for receiving datagrams
  632. SeeAlso: #01716
  633.  
  634. Format of LAN Manager wksta_info_10 structure:
  635. Offset    Size    Description    (Table 01716)
  636.  00h    DWORD     -> computername of the workstation
  637.  04h    DWORD     -> username of user logged onto workstation
  638.  08h    DWORD     -> domain to which workstation belongs
  639.  0Ch    WORD     LAN Manager version number (2 bytes, Major, Minor)
  640.  0Eh    DWORD     -> name of domain which user is loggod on to
  641.  12h    DWORD     -> all domains in which computer is enlisted
  642. Note:    pointers to strings are set to 0000h:0000h if there is insufficient
  643.       space in the buffer to hold them
  644. SeeAlso: #01714,#01715
  645. --------N-215F45-----------------------------
  646. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
  647.     AX = 5F45h
  648.     BX = level (0000h or 0001h)
  649.     CX = buffer size
  650.     DX = parameter to set
  651.     ES:DI -> buffer
  652. Return: CF clear if successful
  653.     CF set if error
  654.         AX = error code
  655. SeeAlso: AX=5F44h
  656. --------N-215F46-----------------------------
  657. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
  658.     AX = 5F46h
  659.     BX = level (0000h or 0001h)
  660.     CX = size of buffer
  661.     ES:DI -> buffer of use_info_0 or use_info_1 structures
  662.           (see #01717,#01718)
  663. Return: CF clear if successful
  664.         CX = entries read
  665.         DX = total available entries
  666.     CF set if error
  667.         AX = error code
  668. SeeAlso: AX=5F47h,AX=5F48h,AX=5F4Ch
  669.  
  670. Format of LAN Manager use_info_0 structure:
  671. Offset    Size    Description    (Table 01717)
  672.  00h  9 BYTEs    local device name
  673.  09h    BYTE    padding
  674.  0Ah    DWORD    -> remote device name in UNC form \\server\share
  675. SeeAlso: #01718
  676.  
  677. Format of LAN Manager use_info_1 structure:
  678. Offset    Size    Description    (Table 01718)
  679.  00h  9 BYTEs    Local device name
  680.  09h    BYTE    padding
  681.  0Ah    DWORD    -> remote device name in UNC form \\server\share
  682.  0Eh    DWORD    -> password
  683.  12h    WORD    network link status
  684.         (00h OK, 02h disconnected, else unsure)
  685.  14h    WORD    use type (-1 wildcard, 0 disk, 1 print, 2 com, 3 ipc)
  686.  16h    WORD    ignored
  687.  18h    WORD    ignored
  688. SeeAlso: #01717
  689. --------N-215F47-----------------------------
  690. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
  691.     AX = 5F47h
  692.     BX = level (0001h)
  693.     CX = size of use_info_1 structure
  694.     ES:DI -> use_info_1 structure (see #01718)
  695. Return: CF clear on success
  696.     CF set on error
  697.         AX = error code
  698. SeeAlso: AX=5F46h,AX=5F48h
  699. --------N-215F48-----------------------------
  700. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
  701.     AX = 5F48h
  702.     BX = force level
  703.         0000h no force
  704.         0001h force
  705.         0002h lots of force
  706.     ES:DI -> buffer as either the local device name or UNC remote name
  707. Return: CF clear on success
  708.     CF set on error
  709.         AX = error code
  710. SeeAlso: AX=5F46h,AX=5F48h,AX=5F49h
  711. --------N-215F49-----------------------------
  712. INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
  713.     AX = 5F49h
  714.     DS:DX -> NetUseGetInfo parameter structure (see #01719)
  715. Return: CF clear on success
  716.         DX = total available
  717.     CF set on error
  718.         AX = error code
  719. SeeAlso: AX=5F44h,AX=5F47h
  720.  
  721. Format of LAN Manager NetUseGetInfo parameter structure:
  722. Offset    Size    Description    (Table 01719)
  723.  00h    DWORD    pointer to either the local device name or UNC remote name
  724.  04h    WORD    level of information (0000h or 0001h)
  725.  06h    DWORD    pointer to buffer of use_info_0 or use_info_1 structures
  726.  0Ah    WORD    length of buffer
  727. --------N-215F4A-----------------------------
  728. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
  729.     AX = 5F4Ah
  730.     DS:DX -> NetRemoteCopy parameter structure (see #01720)
  731. Return: CF clear if successful
  732.     CF set on error
  733.         AX = error code
  734. SeeAlso: AX=5F4Bh
  735.  
  736. Format of LAN Manager NetRemoteCopy parameter structure:
  737. Offset    Size    Description    (Table 01720)
  738.  00h    DWORD    -> source name as UNC
  739.  04h    DWORD    -> destination name as UNC
  740.  08h    DWORD    -> source password
  741.  0Ch    DWORD    -> destination password
  742.  10h    WORD    destination open bitmap
  743.         if destination path exists
  744.             0000h open fails
  745.             0001h file is appended
  746.             0002h file is overwritten
  747.         if destination path doesn't exist
  748.             0000h open fails
  749.             0010h file is created
  750.  12h    WORD    copy control bitmap (see #01721)
  751.  14h    DWORD    -> copy_info buffer
  752.  18h    WORD    length of copy_info buffer
  753.  
  754. Bitfields for LAN Manager copy control:
  755. Bit(s)    Description    (Table 01721)
  756.  0    destination must be a file
  757.  1    destination must be a directory
  758.  2    destination is opened in ascii mode instead of binary
  759.  3    source is opened in ascii mode instead of binary
  760.  4    verify all write operations
  761. --------N-215F4B-----------------------------
  762. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
  763.     AX = 5F4Bh
  764.     DS:DX -> NetRemoteMove parameter structure (see #01722)
  765. Return: CF clear if successful
  766.     CF set on error
  767.         AX = error code
  768. SeeAlso: AX=5F4Ah
  769.  
  770. Format of LAN Manager NetRemoteMove parameter structure:
  771. Offset    Size    Description    (Table 01722)
  772.  00h    DWORD    -> source name as UNC
  773.  04h    DWORD    -> destination name as UNC
  774.  08h    DWORD    -> source password
  775.  0Ch    DWORD    -> destination password
  776.  10h    WORD    destination open bitmap
  777.         if destination path exists
  778.             0000h open fails
  779.             0001h file is appended
  780.             0002h file is overwritten
  781.         if destination path doesn't exist
  782.             0000h open fails
  783.             0010h file is created
  784.  12h    WORD    move control bitmap
  785.             0001h destination must be a file
  786.             0002h destination must be a directory
  787.  14h    DWORD    -> move_info buffer
  788.  18h    WORD    length of move_info buffer
  789. --------N-215F4C-----------------------------
  790. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
  791.     AX = 5F4Ch
  792.     BX = level (0000h or 0001h)
  793.     CX = buffer length
  794.     ES:DI -> buffer in which to store information
  795. Return: CF clear if successful
  796.         ES:DI -> server_info_X structures (depending on level)
  797.           (see #01723,#01724)
  798.         BX = entries read
  799.         CX = total entries available
  800.     CF set on error
  801.         AX = error code
  802. Notes:    this function is also supported by the Novell DOS Named Pipe Extender
  803.     this function has been obseleted by NetServerEnum2
  804. SeeAlso: AX=5F53h
  805.  
  806. Format of LAN Manager server_info_0 structure:
  807. Offset    Size    Description    (Table 01723)
  808.  00h 16 BYTEs    name
  809. SeeAlso: #01724
  810.  
  811. Format of LAN Manager server_info_1 structure:
  812. Offset    Size    Description    (Table 01724)
  813.  00h 16 BYTEs    name
  814.  10h    BYTE    major version in lower nibble
  815.  11h    BYTE    minor version
  816.  12h    DWORD    server type bitmask (see #01725)
  817.  16h    DWORD    -> comment string
  818. SeeAlso: #01723
  819.  
  820. Bitfields for LAN Manager server type:
  821. Bit(s)    Description    (Table 01725)
  822.  0    workstation
  823.  1    server
  824.  2    SQL server
  825.  3    primary domain controller
  826.  4    backup domain controller
  827.  5    time server
  828.  6    Apple File Protocol (AFP) server
  829.  7    Novell server
  830.  8    Domain Member (v2.1+)
  831.  9    Print Queue server (v2.1+)
  832.  10    Dialin server (v2.1+)
  833.  11    Unix server (v2.1+)
  834. Note:    set all (FFFFFFFFh) for All Types
  835. --------N-215F4D-----------------------------
  836. INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
  837.     AX = 5F4Dh
  838.     BX = message size
  839.     CX = mailslot size (must be bigger than message size by at least 1)
  840.                (minimum 1000h, maximum FFF6h)
  841.                (buffer must be 9 bytes bigger than this)
  842.     DS:SI -> name
  843.     ES:DI -> memory buffer
  844. Return: CF clear if successful
  845.         AX = handle
  846.     CF set on error
  847.         AX = error code
  848. SeeAlso: AX=5F4Eh,AX=5F4Fh,AX=5F50h,AX=5F51h
  849. --------N-215F4E-----------------------------
  850. INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
  851.     AX = 5F4Eh
  852.     BX = handle
  853. Return: CF clear if successful
  854.         ES:DI -> memory to be freed (allocated during DosMakeMailslot)
  855.     CF set on error
  856.         AX = error code
  857. SeeAlso: AX=5F4Dh,AX=5F4Fh
  858. --------N-215F4F-----------------------------
  859. INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
  860.     AX = 5F4Fh
  861.     BX = handle
  862. Return: CF clear if successful
  863.         AX = max message size
  864.         BX = mailslot size
  865.         CX = next message size
  866.         DX = next message priority
  867.         SI = number of messages waiting
  868.     CF set on error
  869.         AX = error code
  870. SeeAlso: AX=5F4Dh,AX=5F4Eh,AX=5F50h
  871. --------N-215F50-----------------------------
  872. INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
  873.     AX = 5F50h
  874.     BX = handle
  875.     DX:CX = timeout
  876.     ES:DI -> buffer
  877. Return: CF clear if successful
  878.         AX = bytes read
  879.         CX = next item's size
  880.         DX = next item's priority
  881.     CF set on error
  882.         AX = error code
  883. SeeAlso: AX=5F4Dh,AX=5F4Fh,AX=5F51h,AX=5F52h
  884. --------N-215F51-----------------------------
  885. INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
  886.     AX = 5F51h
  887.     BX = handle
  888.     ES:DI -> buffer
  889. Return: CF clear if successful
  890.         AX = bytes read
  891.         CX = next item's size
  892.         DX = next item's priority
  893.     CF set on error
  894.         AX = error code
  895. SeeAlso: AX=5F35h,AX=5F4Fh,AX=5F50h,AX=5F52h
  896. --------N-215F52-----------------------------
  897. INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
  898.     AX = 5F52h
  899.     BX = class
  900.     CX = length of buffer
  901.     DX = priority
  902.     ES:DI -> DosWriteMailslot parameter structure (see #01726)
  903.     DS:SI -> mailslot name
  904. Return: CF clear if successful
  905.     CF set on error
  906.         AX = error code
  907. SeeAlso: AX=5F4Fh,AX=5F50h,AX=5F51h
  908.  
  909. Format of LAN Manager DosWriteMailslot parameter structure:
  910. Offset    Size    Description    (Table 01726)
  911.  00h    DWORD    timeout
  912.  04h    DWORD    -> buffer
  913. --------N-215F53-----------------------------
  914. INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
  915.     AX = 5F53h
  916.     DS:SI -> NetServerEnum2 parameter structure (see #01727)
  917. Return: CF clear if successful
  918.         BX = entries read
  919.         CX = total entries available
  920.     CF set on error
  921.         AX = error code
  922. SeeAlso: AX=5F4Ch
  923.  
  924. Format of LAN Manager NetServerEnum2 parameter structure:
  925. Offset    Size    Description    (Table 01727)
  926.  00h    WORD    level (0000h or 0001h)
  927.  02h    DWORD    -> buffer as array of server_info_??? structures (see #01723)
  928.  06h    WORD    length of buffer
  929.  08h    DWORD    server type bitmask (see #01725)
  930.  0Ch    DWORD    -> Domain name (may be 0000h:0000h for all local domains)
  931. --------N-215F55----------------------------
  932. INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
  933.     AX = 5F55h
  934.     BX = ???
  935. Return: CF clear if successful
  936.     CF set on error
  937.         AX = error code
  938. --------N-215F80-----------------------------
  939. INT 21 - LANtastic - GET LOGIN ENTRY
  940.     AX = 5F80h
  941.     BX = login entry index (0-based)
  942.     ES:DI -> 16-byte buffer for machine name
  943. Return: CF clear if successful
  944.         buffer filled with machine name ("\\" prefix removed)
  945.         DL = adapter number (v3+)
  946.     CF set on error
  947.         AX = error code
  948. Note:    the login entry index corresponds to the value BX used in AX=5F83h
  949. SeeAlso: AX=5F83h
  950. --------N-215F81-----------------------------
  951. INT 21 - LANtastic - LOGIN TO SERVER
  952.     AX = 5F81h
  953.     ES:DI -> ASCIZ login path followed immediately by ASCIZ password
  954.     BL = adapter number
  955.         FFh try all valid adapters
  956.         00h-07h try only specified adapter
  957. Return: CF clear if successful
  958.     CF set on error
  959.         AX = error code
  960. Notes:    login path is of form "\\machine\username"
  961.     if no password is used, the string at ES:DI must be terminated with
  962.       three NULs for compatibility with LANtastic v3.0.
  963. SeeAlso: AX=5F82h,AX=5F84h
  964. --------N-215F82-----------------------------
  965. INT 21 - LANtastic - LOGOUT FROM SERVER
  966.     AX = 5F82h
  967.     ES:DI -> ASCIZ server name (in form "\\machine")
  968. Return: CF clear if successful
  969.     CF set on error
  970.         AX = error code
  971. SeeAlso: AX=5F81h,AX=5F88h,AX=5FCBh
  972. --------N-215F83-----------------------------
  973. INT 21 - LANtastic - GET USERNAME ENTRY
  974.     AX = 5F83h
  975.     BX = login entry index (0-based)
  976.     ES:DI -> 16-byte buffer for username currently logged into
  977. Return: CF clear if successful
  978.         DL = adapter number (v3+)
  979.     CF set on error
  980.         AX = error code
  981. Note:    the login entry index corresponds to the value BX used in AX=5F80h
  982. SeeAlso: AX=5F80h
  983. --------N-215F84-----------------------------
  984. INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
  985.     AX = 5F84h
  986.     BX = server index not currently logged into
  987.     ES:DI -> 16-byte buffer for server name which is available for logging
  988.         in to ("\\" prefix omitted)
  989. Return: CF clear if successful
  990.         DL = adapter number to non-logged in server is on
  991.     CF set on error
  992.         AX = error code
  993. SeeAlso: AX=5F81h
  994. --------N-215F85-----------------------------
  995. INT 21 - LANtastic - CHANGE PASSWORD
  996.     AX = 5F85h
  997.     ES:DI -> buffer containing "\\machine\oldpassword" 00h "newpassword"00h
  998. Return: CF clear if successful
  999.     CF set on error
  1000.         AX = error code
  1001. Notes:    must be logged into the named machine
  1002.     this function is illegal for group accounts
  1003. --------N-215F86-----------------------------
  1004. INT 21 - LANtastic - DISABLE ACCOUNT
  1005.     AX = 5F86h
  1006.     ES:DI -> ASCIZ machine name and password in form "\\machine\password"
  1007. Return: CF clear if successful
  1008.     CF set on error
  1009.         AX = error code
  1010. Note:    must be logged into the named machine and concurrent logins set to 1
  1011.       by NET_MGR.  Requires system manager to re-enable account.
  1012. --------N-215F87-----------------------------
  1013. INT 21 - LANtastic v3+ - GET ACCOUNT
  1014.     AX = 5F87h
  1015.     DS:SI -> 128-byte buffer for account information (see #01728)
  1016.     ES:DI -> ASCIZ machine name in form "\\machine"
  1017. Return: CF clear if successful
  1018.     CF set on error
  1019.         AX = error code
  1020.     BX destroyed
  1021. Note:    must be logged into the specified machine
  1022.  
  1023. Format of LANtastic user account structure:
  1024. Offset    Size    Description    (Table 01728)
  1025.  00h 16 BYTEs    blank-padded username (zero-padded for v4.x)
  1026.  10h 16 BYTEs    reserved (00h)
  1027.  20h 32 BYTEs    user description
  1028.  40h    BYTE    privilege bits (see #01729)
  1029.  41h    BYTE    maximum concurrent users
  1030.  42h 42 BYTEs    bit map for disallowed half hours, beginning on Sunday
  1031.         (bit set if half-hour not an allowed time)
  1032.  6Ch    WORD    internal (0002h)
  1033.  6Eh  2 WORDs    last login time
  1034.  72h  2 WORDs    account expiration date (MS-DOS-format year/month:day)
  1035.  76h  2 WORDs    password expiration date (0 = none)
  1036.  7Ah    BYTE    number of days to extend password after change (1-31)
  1037.         00h if no extension required
  1038. ---v3.x---
  1039.  7Bh  5 BYTEs    reserved
  1040. ---v4.x---
  1041.  7Bh    BYTE    storage for first letter of user name when deleted (first
  1042.           character is changed to 00h when deleting account)
  1043.  7Ch    BYTE    extended privileges
  1044.  7Dh  3 BYTEs    reserved
  1045.  
  1046. Bitfields for LANtastic privilege bits:
  1047. Bit(s)    Description    (Table 01729)
  1048.  7    bypass access control lists
  1049.  6    bypass queue protection
  1050.  5    treat as local process
  1051.  4    bypass mail protection
  1052.  3    allow audit entry creation
  1053.  2    system manager
  1054.  0    user cannot change password
  1055. --------N-215F88-----------------------------
  1056. INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
  1057.     AX = 5F88h
  1058. Return: CF clear if successful
  1059.     CF set on error
  1060.         AX = error code
  1061. SeeAlso: AX=5F82h
  1062. --------N-215F97-----------------------------
  1063. INT 21 - LANtastic - COPY FILE
  1064.     AX = 5F97h
  1065.     CX:DX = number of bytes to copy (FFFFFFFFh = entire file)
  1066.     SI = source file handle
  1067.     DI = destination file handle
  1068. Return: CF clear if successful
  1069.         DX:AX = number of bytes copied
  1070.     CF set on error
  1071.         AX = error code
  1072. Note:    copy is performed by server
  1073. --------N-215F98-----------------------------
  1074. INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
  1075.     AX = 5F98h
  1076.     DS:SI -> message buffer (see #01730)
  1077. Return: CF clear if successful
  1078.     CF set on error
  1079.         AX = error code
  1080. Note:    v4.1- return no errors
  1081. SeeAlso: AX=5F99h
  1082.  
  1083. Format of LANtastic message buffer:
  1084. Offset    Size    Description    (Table 01730)
  1085.  00h    BYTE    reserved
  1086.  01h    BYTE    message type
  1087.         00h general
  1088.         01h server warning
  1089.         02h-7Fh reserved
  1090.         80h-FFh user-defined
  1091.  02h 16 BYTEs    ASCIZ destination machine name
  1092.  12h 16 BYTEs    ASCIZ server name which user must be logged into
  1093.  22h 16 BYTEs    ASCIZ user name
  1094.  32h 16 BYTEs    ASCIZ originating machine name (filled in when received)
  1095.  42h 80 BYTEs    message text
  1096. --------N-215F99-----------------------------
  1097. INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
  1098.     AX = 5F99h
  1099.     ES:DI -> messsage buffer (see #01730)
  1100. Return: CF clear if successful
  1101.     CF set on error
  1102.         AX = error code
  1103. SeeAlso: AX=5F98h
  1104. --------N-215F9A-----------------------------
  1105. INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
  1106.     AX = 5F9Ah
  1107. Return: CF clear if successful
  1108.         DL = bits describing processing of received messages (see #01731)
  1109.     CF set on error
  1110.         AX = error code
  1111. SeeAlso: AX=5F9Bh,AX=5F9Ch,AX=5F9Dh
  1112.  
  1113. Bitfields for unsolicited message processing flags:
  1114. Bit(s)    Description    (Table 01731)
  1115.  0    beep before message is delivered
  1116.  1    deliver message to message service
  1117.  2    pop up message automatically (v3+)
  1118. --------N-215F9B-----------------------------
  1119. INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
  1120.     AX = 5F9Bh
  1121.     DL = bits describing processing for received unsolicited messages
  1122.          (see #01731)
  1123. Return: CF clear if successful
  1124.     CF set on error
  1125.         AX = error code
  1126. SeeAlso: AX=5F9Ah,AX=5F9Eh
  1127. --------N-215F9C-----------------------------
  1128. INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
  1129.     AX = 5F9Ch
  1130.     CX = time to leave on screen in clock ticks
  1131.     DH = 0-based screen line on which to place message
  1132. Return: CF clear if successful
  1133.     CF set on error
  1134.         AX = error code (0Bh)
  1135. Notes:    the original screen contents are restored when the message is removed
  1136.     the message will not appear, and an error will be returned, if the
  1137.       screen is in a graphics mode
  1138. SeeAlso: AX=5F9Ah
  1139. --------N-215F9D-----------------------------
  1140. INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
  1141.     AX = 5F9Dh
  1142. Return: DL = redirector control bits
  1143.         bit 7: set to notify on print job completion
  1144. SeeAlso: AX=5F9Ah,AX=5F9Eh
  1145. --------N-215F9E-----------------------------
  1146. INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
  1147.     AX = 5F9Eh
  1148.     DL = redirector control bits (see AX=5F9Dh)
  1149. Return: nothing
  1150. SeeAlso: AX=5F9Bh,AX=5F9Dh
  1151. --------N-215FA0-----------------------------
  1152. INT 21 - LANtastic - GET QUEUE ENTRY
  1153.     AX = 5FA0h
  1154.     BX = queue entry index (0000h is first entry)
  1155.     DS:SI -> buffer for queue entry (see #01732)
  1156.     ES:DI -> ASCIZ server name in form "\\name"
  1157. Return: CF clear if successful
  1158.     CF set on error
  1159.         AX = error code
  1160.     BX = entry index for next queue entry (BX-1 is current index)
  1161. SeeAlso: AX=5FA1h,AX=5FA2h
  1162.  
  1163. Format of LANtastic queue entry:
  1164. Offset    Size    Description    (Table 01732)
  1165.  00h    BYTE    status of entry (see #01733)
  1166.  01h    DWORD    size of spooled file
  1167.  05h    BYTE    type of entry (see #01734)
  1168.  06h    BYTE    output control (see #01735)
  1169.  07h    WORD    number of copies
  1170.  09h    DWORD    sequence number of queue entry
  1171.  0Dh 48 BYTEs    pathname of spooled file
  1172.  3Dh 16 BYTEs    user who spooled file
  1173.  4Dh 16 BYTEs    name of machine from which file was spooled
  1174.  5Dh    WORD    date file was spooled (see #01666 at AX=5700h)
  1175.  5Fh    WORD    time file was spooled (see #01665 at AX=5700h)
  1176.  61h 17 BYTEs    ASCIZ destination device or user name
  1177.  72h 48 BYTEs    comment field
  1178.  
  1179. (Table 01733)
  1180. Values for status of LANtastic queue entry:
  1181.  00h    empty
  1182.  01h    being updated
  1183.  02h    being held
  1184.  03h    waiting for despool
  1185.  04h    being despooled
  1186.  05h    canceled
  1187.  06h    spooled file could not be accessed
  1188.  07h    destination could not be accessed
  1189.  08h    rush job
  1190.  
  1191. (Table 01734)
  1192. Values for type of LANtastic queue entry:
  1193.  00h    printer queue file
  1194.  01h    message
  1195.  02h    local file
  1196.  03h    remote file
  1197.  04h    to remote modem
  1198.  05h    batch processor file
  1199.  
  1200. Bitfields for output control:
  1201. Bit(s)    Description    (Table 01735)
  1202.  6    don't delete (for mail)
  1203.  5    mail file contains voice mail (v3+)
  1204.  4    mail message has been read
  1205.  3    response has been requested for this mail
  1206. --------N-215FA1-----------------------------
  1207. INT 21 - LANtastic - SET QUEUE ENTRY
  1208.     AX = 5FA1h
  1209.     BX = handle of opened queue entry
  1210.     DS:SI -> queue entry (see #01732)
  1211. Return: CF clear if successful
  1212.     CF set on error
  1213.         AX = error code
  1214. Notes:    the only queue entry fields which may be changed are output control,
  1215.       number of copies, destination device, and comment
  1216.     the handle in BX is that from a create or open (INT 21/AH=3Ch,3Dh)
  1217.       call on the file "\\server\\@MAIL" or "\\server\@name" (for
  1218.       printer queue entries)
  1219. SeeAlso: AX=5FA0h,AX=5FA2h,AX=5FA9h
  1220. --------N-215FA2-----------------------------
  1221. INT 21 - LANtastic - CONTROL QUEUE
  1222.     AX = 5FA2h
  1223.     BL = control command
  1224.         00h start despooling (privileged)
  1225.         01h halt despooling (privileged)
  1226.         02h halt despooling at end of job (privileged)
  1227.         03h pause despooler at end of job (privileged)
  1228.         04h print single job (privileged)
  1229.         05h restart current job (privileged)
  1230.         06h cancel the current job
  1231.         07h hold queue entry
  1232.         08h release a held queue entry
  1233.         09h make queue entry a rushed job (privileged)
  1234.     CX:DX = sequence number to control (commands 06h-09h)
  1235.     DX = physical printer number (commands 00h-05h)
  1236.         00h-02h LPT1-LPT3
  1237.         03h,04h COM1,COM2
  1238.         other    all printers
  1239.     ES:DI -> ASCIZ server name in form "\\machine"
  1240. Return: CF clear if successful
  1241.     CF set on error
  1242.         AX = error code
  1243. --------N-215FA3-----------------------------
  1244. INT 21 - LANtastic v3+ - GET PRINTER STATUS
  1245.     AX = 5FA3h
  1246.     BX = physical printer number (00h-02h = LPT1-LPT3, 03h-04h = COM1-COM2)
  1247.     DS:SI -> buffer for printer status (see #01736)
  1248.     ES:DI -> ASCIZ server name in form "\\machine"
  1249. Return: CF clear if successful
  1250.     CF set on error
  1251.         AX = error code
  1252.     BX = next physical printer number
  1253. Note:    you must be logged in to the specified server
  1254.  
  1255. Format of LANtastic printer status:
  1256. Offset    Size    Description    (Table 01736)
  1257.  00h    BYTE    printer state (see #01737)
  1258.  01h    WORD    queue index of print job being despooled
  1259.         FFFFh if not despooling--ignore all following fields
  1260.  03h    WORD    actual characters per second being output
  1261.  05h    DWORD    number of characters actually output so far
  1262.  09h    DWORD    number of bytes read from spooled file so far
  1263.  0Dh    WORD    copies remaining to print
  1264.  
  1265. Bitfields for LANtastic printer state:
  1266. Bit(s)    Description    (Table 01737)
  1267.  7    printer paused
  1268.  0-6    0 printer disabled
  1269.     1 will stop at end of job
  1270.     2 print multiple jobs
  1271. --------N-215FA4-----------------------------
  1272. INT 21 - LANtastic v3+ - GET STREAM INFO
  1273.     AX = 5FA4h
  1274.     BX = 0-based stream index number
  1275.     DS:SI -> buffer for stream information (see #01738)
  1276.     ES:DI -> ASCIZ machine name in form "\\machine"
  1277. Return: CF clear if successful
  1278.     CF set on error
  1279.         AX = error code
  1280.     BX = next stream number
  1281. SeeAlso: AX=5FA5h
  1282.  
  1283. Format of LANtastic stream information:
  1284. Offset    Size    Description    (Table 01738)
  1285.  00h    BYTE    queueing of jobs for logical printer (0=disabled,other=enabled)
  1286.  01h 11 BYTEs    logical printer resource template (may contain ? wildcards)
  1287. --------N-215FA5-----------------------------
  1288. INT 21 - LANtastic v3+ - SET STREAM INFO
  1289.     AX = 5FA5h
  1290.     BX = 0-based stream index number
  1291.     DS:SI -> buffer containing stream information (see #01738)
  1292.     ES:DI -> ASCIZ machine name in form "\\machine"
  1293. Return: CF clear if successful
  1294.     CF set on error
  1295.         AX = error code
  1296. SeeAlso: AX=5FA4h
  1297. --------N-215FA7-----------------------------
  1298. INT 21 - LANtastic - CREATE USER AUDIT ENTRY
  1299.     AX = 5FA7h
  1300.     DS:DX -> ASCIZ reason code (max 8 bytes)
  1301.     DS:SI -> ASCIZ variable reason string (max 128 bytes)
  1302.     ES:DI -> ASCIZ machine name in form "\\machine"
  1303. Return: CF clear if successful
  1304.     CF set on error
  1305.         AX = error code
  1306. Note:    you must be logged in to the specified server and have the "U"
  1307.       privilege to execute this call
  1308. --------N-215FA9-----------------------------
  1309. INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
  1310.     AX = 5FA9h
  1311.     BX = handle of opened queue entry
  1312.     DS:SI -> queue entry (see #01732)
  1313. Return: CF clear if successful
  1314.     CF set on error
  1315.         AX = error code
  1316. Note:    functions exactly the same as AX=5FA1h except the spooled filename is
  1317.       also set.  This call supports direct despooling.
  1318. SeeAlso: AX=5FA1h
  1319. --------N-215FB0-----------------------------
  1320. INT 21 - LANtastic - GET ACTIVE USER INFORMATION
  1321.     AX = 5FB0h
  1322.     BX = server login entry index
  1323.     DS:SI -> buffer for active user entry (see #01739)
  1324.     ES:DI -> ASCIZ machine name in form "\\server"
  1325. Return: CF clear if successful
  1326.     CF set on error
  1327.         AX = error code
  1328.     BX = next login index
  1329. SeeAlso: AX=5FB2h
  1330.  
  1331. Format of LANtastic active user entry:
  1332. Offset    Size    Description    (Table 01739)
  1333.  00h    WORD    virtual circuit number
  1334.  02h    BYTE    login state (see #01740)
  1335.  03h    BYTE    last command issued (see #01741)
  1336.  04h  5 BYTEs    number of I/O bytes (40-bit unsigned number)
  1337.  09h  3 BYTEs    number of server requests (24-bit unsigned)
  1338.  0Ch 16 BYTEs    name of user who is logged in
  1339.  1Ch 16 BYTEs    name of remote logged in machine
  1340.  2Ch    BYTE    extended privileges (v4+???)
  1341.         bit 0: user cannot change his password
  1342.  2Dh    WORD    time left in minutes (0000h = unlimited) (v4+???)
  1343.  
  1344. Bitfields for login state:
  1345. Bit(s)    Description    (Table 01740)
  1346.  0    fully logged in
  1347.  1    remote program load login
  1348.  2    user has system manager privileges
  1349.  3    user can create audit entries
  1350.  4    bypass mail protection
  1351.  5    treat as local process
  1352.  6    bypass queue protection
  1353.  7    bypass access control lists
  1354.  
  1355. (Table 01741)
  1356. Values for last LANtastic command:
  1357.  00h    login
  1358.  01h    process termination
  1359.  02h    open file
  1360.  03h    close file
  1361.  04h    create file
  1362.  05h    create new file
  1363.  06h    create unique file
  1364.  07h    commit data to disk
  1365.  08h    read file
  1366.  09h    write file
  1367.  0Ah    delete file
  1368.  0Bh    set file attributes
  1369.  0Ch    lock byte range
  1370.  0Dh    unlock byte range
  1371.  0Eh    create subdirectory
  1372.  0Fh    remove subdirectory
  1373.  10h    rename file
  1374.  11h    find first matching file
  1375.  12h    find next matching file
  1376.  13h    get disk free space
  1377.  14h    get a queue entry
  1378.  15h    set a queue entry
  1379.  16h    control the queue
  1380.  17h    return login information
  1381.  18h    return link description
  1382.  19h    seek on file
  1383.  1Ah    get server's time
  1384.  1Bh    create audit entry
  1385.  1Ch    open file in multitude of modes
  1386.  1Dh    change password
  1387.  1Eh    disable account
  1388.  1Fh    local server file copy
  1389. ---v3+---
  1390.  20h    get username from account file
  1391.  21h    translate server's logical path
  1392.  22h    make indirect file
  1393.  23h    get indirect file contents
  1394.  24h    get physical printer status
  1395.  25h    get logical print stream info
  1396.  26h    set logical print stream info
  1397.  27h    get user's account record
  1398. ---v4+---
  1399.  28h    request server shutdown
  1400.  29h    cancel server shutdown
  1401.  2Ah    stuff server's keyboard
  1402.  2Bh    write then commit data to disk
  1403.  2Ch    set extended queue entry
  1404.  2Dh    terminate user from server
  1405.  2Eh    enable/disable logins
  1406.  2Fh    flush server caches
  1407.  30h    change username
  1408.  31h    get extended queue entry
  1409.     (same as get queue, but can return named fields blanked)
  1410. --------N-215FB1-----------------------------
  1411. INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
  1412.     AX = 5FB1h
  1413.     DS:SI -> 64-byte buffer for link description
  1414.     ES:DI -> ASCIZ machine and shared directory name in form
  1415.          "\\machine\shared-resource"
  1416. Return: CF clear if successful
  1417.         CX = access control list privileges for requesting user (see #01742)
  1418.     CF set on error
  1419.         AX = error code
  1420.  
  1421. Bitfields for LANtastic access control list:
  1422. Bit(s)    Description    (Table 01742)
  1423.  4    (I) allow expansion of indirect files
  1424.  5    (A) allow attribute changing
  1425.  6    (P) allow physical access to device
  1426.  7    (E) allow program execution
  1427.  8    (N) allow file renaming
  1428.  9    (K) allow directory deletion
  1429.  10    (D) allow file deletion
  1430.  11    (L) allow file/directory lookups
  1431.  12    (M) allow directory creation
  1432.  13    (C) allow file creation
  1433.  14    (W) allow open for write and writing
  1434.  15    (R) allow open for read and reading
  1435. --------N-215FB2-----------------------------
  1436. INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
  1437.     AX = 5FB2h
  1438.     BX = username entry index (0 for first)
  1439.     DS:SI -> 16-byte buffer for username
  1440.     ES:DI -> ASCIZ server name in form "\\machine"
  1441. Return: CF clear if successful
  1442.     CF set on error
  1443.         AX = error code
  1444.     BX = next queue entry index
  1445. SeeAlso: AX=5FB0h
  1446. --------N-215FB3-----------------------------
  1447. INT 21 - LANtastic v3+ - TRANSLATE PATH
  1448.     AX = 5FB3h
  1449.     DS:SI -> 128-byte buffer for ASCIZ result
  1450.     ES:DI -> full ASCIZ path, including server name
  1451.     DX = types of translation to be performed
  1452.         bit 0: expand last component as indirect file
  1453.         bit 1: return actual path relative to server's physical disk
  1454. Return: CF clear if successful
  1455.     CF set on error
  1456.         AX = error code
  1457. Note:    always expands any indirect files along the path
  1458. SeeALso: AX=5FB4h,INT 21/AH=60h
  1459. --------N-215FB4-----------------------------
  1460. INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
  1461.     AX = 5FB4h
  1462.     DS:SI -> 128-byte buffer containing ASCIZ contents of indirect file
  1463.     ES:DI -> full ASCIZ path of indirect file to create, incl machine name
  1464. Return: CF clear if successful
  1465.     CF set on error
  1466.         AX = error code
  1467. Note:    the contents of the indirect file may be any valid server-relative path
  1468. SeeAlso: AX=5FB3h,AX=5FB5h
  1469. --------N-215FB5-----------------------------
  1470. INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
  1471.     AX = 5FB5h
  1472.     DS:SI -> 128-byte buffer for ASCIZ indirect file contents
  1473.     ES:DI -> full ASCIZ path of indirect file
  1474. Return: CF clear if successful
  1475.     CF set on error
  1476.         AX = error code
  1477. SeeAlso: AX=5FB4h
  1478. --------N-215FB6-----------------------------
  1479. INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
  1480.     AX = 5FB6h
  1481.     ES:DI -> pointer to ASCIZ default user name, immediately followed by
  1482.         ASCIZ password
  1483.     BL = adapter number to use for default login attempt
  1484.         FFh try all valid adapters
  1485.         00h-05h try adapter 0-5 explicitly
  1486. Return: CF clear if successful
  1487.     CF set on error
  1488.         AX = error code
  1489. Notes:    call with ES:DI -> two nulls to disable auto-login
  1490. SeeAlso: AX=5FB7h
  1491. --------N-215FB7-----------------------------
  1492. INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
  1493.     AX = 5FB7h
  1494.     ES:DI -> pointer to 16-byte buffer to store ASCIZ auto-login user name
  1495. Return: CF clear if successful
  1496.         DL = adapter number used for default login attempt
  1497.         FFh all valid adapters will be tried
  1498.         00h-05h specified adapter will be tried explicitly
  1499.     CF set on error
  1500.         AX = error code
  1501. SeeAlso: AX=5F81h,AX=5FB6h
  1502. --------N-215FC0-----------------------------
  1503. INT 21 - LANtastic - GET TIME FROM SERVER
  1504.     AX = 5FC0h
  1505.     DS:SI -> time block (see #01743)
  1506.     ES:DI -> ASCIZ server name to get time from
  1507. Return: CF clear if successful
  1508.     CF set on error
  1509.         AX = error code
  1510. SeeAlso: AH=E7h"Novell"
  1511.  
  1512. Format of LANtastic time block:
  1513. Offset    Size    Description    (Table 01743)
  1514.  00h    WORD    year
  1515.  02h    BYTE    day
  1516.  03h    BYTE    month
  1517.  04h    BYTE    minutes
  1518.  05h    BYTE    hour
  1519.  06h    BYTE    hundredths of second
  1520.  07h    BYTE    second
  1521. --------N-215FC8-----------------------------
  1522. INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
  1523.     AX = 5FC8h
  1524.     ES:DI -> ASCIZ server name in form "\\machine"
  1525.     DS:SI -> ASCIZ reason string (80 characters)
  1526.     CX = number of minutes until shutdown (0 = immediate)
  1527.     DX = option flags (see #01744)
  1528. Return: CF clear if successful
  1529.     CF set on error
  1530.         AX = error code
  1531. SeeAlso: AX=5FC9h
  1532.  
  1533. Bitfields for LANtastic option flags:
  1534. Bit(s)    Description    (Table 01744)
  1535.  0    auto reboot
  1536.  1    do not notify users
  1537.  2    halt after shutdown
  1538.  3    shutdown due to power fail (used by UPS)
  1539.  4-7    reserved
  1540.  8-14    user definable
  1541.  15    reserved
  1542. --------N-215FC9-----------------------------
  1543. INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
  1544.     AX = 5FC9h
  1545.     ES:DI -> ASCIZ server name in form "\\machine"
  1546. Return: CF clear if successful
  1547.     CF set on error
  1548.         AX = error code
  1549. Note:    you must have the "S" privilege to use this call
  1550. SeeAlso: AX=5FC8h
  1551. --------N-215FCA-----------------------------
  1552. INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
  1553.     AX = 5FCAh
  1554.     ES:DI -> ASCIZ server name in form "\\machine"
  1555.     DS:SI -> ASCIZ string to stuff (128 bytes)
  1556. Return: CF clear if successful
  1557.     CF set on error
  1558.         AX = error code
  1559. Note:    you must have the "S" privilege to use this call
  1560.     maximum number of characters that can be stuffed is determined by the
  1561.       server's RUN BUFFER SIZE.
  1562. SeeAlso: INT 16/AH=05h
  1563. --------N-215FCB-----------------------------
  1564. INT 21 - LANtastic v4.1+ - TERMINATE USER
  1565.     AX = 5FCBh
  1566.     ES:DI -> ASCIZ server name in form "\\machine"
  1567.     DS:SI -> blank-padded username.     A null char = wildcard.
  1568.     DS:DX -> blank-padded machine name.  A null char = wildcard.
  1569.     CX = minutes until termination (0 = immediate)
  1570. Return: CF clear if successful
  1571.     CF set on error
  1572.         AX = error code
  1573. Note:    you must have the "S" privilege to use this call
  1574.     you cannot log yourself out using this call
  1575. SeeAlso: AX=5F82h
  1576. --------N-215FCC-----------------------------
  1577. INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
  1578.     AX = 5FCCh
  1579.     ES:DI -> ASCIZ server name in form "\\machine"
  1580.     CX = bit values (value of bits you want to set) (see #01745)
  1581.     DX = bit mask (bits you are interested in, 0 = get only) (see #01745)
  1582. Return: CF clear if successful
  1583.         CX = control bits after call (see #01745)
  1584.     CF set on error
  1585.         AX = error code
  1586. Note:    you must have the "S" privilege to SET, anyone can GET.
  1587.  
  1588. Bitfields for control bits:
  1589. Bit(s)    Description    (Table 01745)
  1590.  0    disable logins
  1591. --------N-215FCD-----------------------------
  1592. INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
  1593.     AX = 5FCDh
  1594.     ES:DI -> ASCIZ server name in form "\\machine"
  1595. Return: CF clear if successful
  1596.     CF set on error
  1597.         AX = error code
  1598. Note:    you must have the "S" privilege to use this call.
  1599. --------N-215FD0-----------------------------
  1600. INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
  1601.     AX = 5FD0h
  1602. Return: CF clear if successful
  1603.         CX = redirected printer timeout in clock ticks of 55ms
  1604.         0000h if timeout disabled
  1605.     CF set on error
  1606.         AX = error code
  1607. SeeAlso: AX=5FD1h
  1608. --------N-215FD1-----------------------------
  1609. INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
  1610.     AX = 5FD1h
  1611.     CX = printer timeout in clock ticks of 55ms, 0000h to disable timeouts
  1612. Return: CF clear if successful
  1613.     CF set on error
  1614.         AX = error code
  1615. SeeAlso: AX=5FD0h
  1616. --------N-215FE0-----------------------------
  1617. INT 21 C - LANtastic - GET DOS SERVICE VECTOR
  1618.     AX = 5FE0h
  1619. Return: CF clear if successful
  1620.         ES:BX -> current FAR service routine
  1621.     CF set on error
  1622.         AX = error code
  1623. Note:    the service routine is called by the LANtastic redirector whenever DOS
  1624.       may safely be called, permitting external TSRs and drivers to hook
  1625.       into LANtastic's DOS busy flag checking
  1626. SeeAlso: AX=5FE1h,INT 28,INT 2A/AH=84h
  1627. --------N-215FE1-----------------------------
  1628. INT 21 - LANtastic - SET DOS SERVICE VECTOR
  1629.     AX = 5FE1h
  1630.     ES:BX -> FAR routine to call when DOS services are available
  1631. Return: CF clear if successful
  1632.     CF set on error
  1633.         AX = error code
  1634. Note:    new handler must chain to previous handler as its first action
  1635. SeeAlso: AX=5FE0h
  1636. --------N-215FE2-----------------------------
  1637. INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
  1638.     AX = 5FE2h
  1639. Return: CF clear if successful
  1640.         ES:BX -> current FAR message service routine
  1641.     CF set on error
  1642.         AX = error code
  1643. SeeAlso: AX=5FE0h,AX=5FE3h
  1644. --------N-215FE3-----------------------------
  1645. INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
  1646.     AX = 5FE3h
  1647.     ES:BX -> FAR routine for processing network messages
  1648. Return: CF clear if successful
  1649.     CF set on error
  1650.         AX = error code
  1651. Notes:    handler must chain to previous handler as its first action
  1652.     on invocation, ES:BX -> just-received message
  1653. SeeAlso: AX=5FE2h
  1654. --------D-2160-------------------------------
  1655. INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
  1656.     AH = 60h
  1657.     DS:SI -> ASCIZ filename or path
  1658.     ES:DI -> 128-byte buffer for canonicalized name
  1659. Return: CF set on error
  1660.         AX = error code
  1661.         02h invalid component in directory path or drive letter only
  1662.         03h malformed path or invalid drive letter
  1663.         ES:DI buffer unchanged
  1664.     CF clear if successful
  1665.         AH = 00h or 3Ah (DOS 6.1/6.2 for character device)
  1666.         AL = destroyed (00h or 2Fh or 5Ch or last character of current
  1667.           directory on drive)
  1668.         buffer filled with qualified name of form D:\PATH\FILE.EXT or
  1669.           \\MACHINE\PATH\FILE.EXT
  1670. Desc:    determine the canonical name of the specified filename or path,
  1671.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  1672. Notes:    the input path need not actually exist
  1673.     letters are uppercased, forward slashes converted to backslashes,
  1674.       asterisks converted to appropriate number of question marks, and
  1675.       file and directory names are truncated to 8.3 if necessary.  (DR DOS
  1676.       3.41 and 5.0 do not expand asterisks)
  1677.     '.' and '..' in the path are resolved
  1678.     filespecs on local drives always start with "d:", those on network
  1679.       drives always start with "\\"
  1680.     if path string is on a JOINed drive, the returned name is the one that
  1681.       would be needed if the drive were not JOINed; similarly for a
  1682.       SUBSTed, ASSIGNed, or network drive letter.    Because of this, it is
  1683.       possible to get a qualified name that is not legal under the current
  1684.       combination of SUBSTs, ASSIGNs, JOINs, and network redirections
  1685.     under DOS 3.3 through 6.00, a device name is translated differently if
  1686.       the device name does not have an explicit directory or the directory
  1687.       is \DEV (relative directory DEV from the root directory works
  1688.       correctly).  In these cases, the returned string consists of the
  1689.       unchanged device name and extension appended to the string X:/
  1690.       (forward slash instead of backward slash as in all other cases) where
  1691.       X is the default or explicit drive letter.
  1692.     under MS-DOS 7.0, this call returns the short name for any
  1693.       long-filename portions of the provided pathname or filename
  1694.     functions which take pathnames require canonical paths if invoked via
  1695.       INT 21/AX=5D00h
  1696.     supported by OS/2 v1.1 compatibility box
  1697.     NetWare 2.1x does not support characters with the high bit set; early
  1698.       versions of NetWare 386 support such characters except in this call.
  1699.       In addition, NetWare returns error code 3 for the path "X:\"; one
  1700.       should use "X:\." instead.
  1701.     Novell DOS 7 reportedly has difficulty with non-MS-DOS filenames on
  1702.       network drives, and can return "D:" instead of "SERVER/VOLUME"
  1703.     for DOS 3.3-6.0, the input and output buffers may be the same, as the
  1704.       canonicalized name is built in an internal buffer and copied to the
  1705.       specified output buffer as the very last step
  1706.     for DR DOS 6.0, this function is not automatically called when on a
  1707.       network.  Device drivers reportedly cannot make this call from their
  1708.       INIT function.  Using the same pointer for both input and output
  1709.       buffers is not supported in the April 1992 and earlier versions of
  1710.       DR DOS
  1711.     Windows for Workgroups 3.11, Windows95 and even MS-DOS 7.00 only
  1712.       return the local drive path; to obtain network paths use
  1713.       INT 21/AX=5F02h or INT 21/AX=5F46h instead
  1714.     Corel's CORELCDX and MSCDEX without the /S switch return canonical
  1715.       names of the form "\\D.\A.\path", where "D" is the CD-ROM drive
  1716.       letter and "A" appears to indicate the first physical CD-ROM drive;
  1717.       MSCDEX with the /S switch returns a canonical name with embedded
  1718.       blanks.  Novell DOS 7 NWCDEX as of the 11/16/94 update returns the
  1719.       same canonical path as MSCDEX; earlier revisions returned
  1720.       "Cdex.   D:\path", where "D" is the CD-ROM drive letter
  1721.     the Windows95 MSCDEX-replacement VxD returns "D:\path", even though the
  1722.       MS-DOS 7.00 MSCDEX behaves identically to older versions (above)
  1723. BUG:    Windows95 incorrectly treats filenames where the first two characters
  1724.       after the drive letter and colon are both slashes (either forward
  1725.       or backward) as a UNC (network name) and requires several seconds
  1726.       to attempt to resolve the name before returning an unchanged
  1727.       string
  1728. SeeAlso: AX=5F02h,AX=5FB3h,AX=7160h/CL=00h,INT 2F/AX=1123h,INT 2F/AX=1221h
  1729. --------D-2161-------------------------------
  1730. INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
  1731.     AH = 61h
  1732. Return: AL = 00h
  1733. Note:    this function does nothing and returns immediately
  1734. --------O-2161--BP6467-----------------------
  1735. INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
  1736.     AH = 61h
  1737.     BP = 6467h ("dg")
  1738.     AL = function
  1739.         00h list (i.e. get)
  1740.         01h add
  1741.         02h delete
  1742.     BX = drive number
  1743.     CX = size of buffer
  1744.     SI = type (0002h JOIN, 0003h SUBST)
  1745.     ES:DI -> buffer
  1746. Return: CF clear if successful
  1747.         AX = 0000h
  1748.         ES:DI buffer filled, if appropriate
  1749.     CF set on error
  1750.         AX = error code
  1751. Notes:    used by JOIN and SUBST to communicate with the OS/2 file system
  1752.     for function 00h (list), the ES:DI buffer is filled with the ASCIZ
  1753.       JOIN/SUBST path or an empty string if the drive is not JOINed/SUBSTed
  1754.     also supported by OS/2 v2.0+ Virtual DOS Machines
  1755. --------D-2162-------------------------------
  1756. INT 21 - DOS 3.0+ - GET CURRENT PSP ADDRESS
  1757.     AH = 62h
  1758. Return: BX = segment of PSP for current process
  1759. Notes:    this function does not use any of the DOS-internal stacks and may
  1760.       thus be called at any time, even during another INT 21h call
  1761.     the current PSP is not necessarily the caller's PSP
  1762.     identical to the undocumented AH=51h
  1763. SeeAlso: AH=50h,AH=51h
  1764. --------U-216262SI1994-----------------------
  1765. INT 21 - ENVLOCK - INSTALLATION CHECK
  1766.     AX = 6262h
  1767.     SI = 1994h
  1768. Return: AX = 1994h if installed
  1769.         ES = ENVLOCK's resident segment
  1770. Notes:    to deactivate ENVLOCK, zero out the byte at ES:[0102h]
  1771. Program: ENVLOCK is a TSR by Alexander Yanovsky (aka PC Hawk) that forces
  1772.       other TSRs to deallocate their environment when they stay resident
  1773. --------D-216300-----------------------------
  1774. INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
  1775.     AX = 6300h
  1776. Return: CF clear if successful
  1777.         DS:SI -> lead byte table (see #01746)
  1778.     CF set on error
  1779.         AX = error code (01h) (see #01680 at AH=59h/BX=0000h)
  1780. Notes:    does not preserve any registers other than SS:SP
  1781.     the US version of MS-DOS 3.30 treats this as an unused function,
  1782.       setting AL=00h and returning immediately
  1783. SeeAlso: AX=6301h,AH=07h,AH=08h,AH=0Bh
  1784.  
  1785. Format of double-byte character set lead byte table entry:
  1786. Offset    Size    Description    (Table 01746)
  1787.  00h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  1788.  02h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  1789.     ...
  1790.   N   2 BYTEs    00h,00h end flag
  1791. --------D-216300-----------------------------
  1792. INT 21 - DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
  1793.     AX = 6300h
  1794. Return: AL = error code
  1795.         00h successful
  1796.         DS:SI -> DBCS table (see #01746)
  1797.         all other registers except CS:IP and SS:SP destroyed
  1798.         FFh not supported
  1799. Notes:    probably identical to AH=63h/AL=00h for DOS 2.25
  1800.     the US version of MS-DOS 3.30 treats this as an unused function,
  1801.       setting AL=00h and returning immediately, WITHOUT setting DS:SI;
  1802.       only the Far East versions of MS-DOS 3.2 and 3.3 supported this call
  1803.     the US version of DOS 4.0+ accepts this function, but returns an empty
  1804.       list
  1805.     IBM DOS 6.1 SYS.COM assumes that CF is set on error
  1806. SeeAlso: AX=6300h"DOS 2.25"
  1807. --------D-216301-----------------------------
  1808. INT 21 - DOS 2.25, DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
  1809.     AX = 6301h
  1810.     DL = new mode
  1811.         00h return only full characters on DOS keyboard input functions
  1812.         01h return partially-formed (interim) characters also
  1813. Return: AL = status
  1814.         00h successful
  1815.         FFh invalid mode
  1816. Notes:    Novell DOS 7 simply stores DL in the caller's PSP (see #01378 at AH=26h)
  1817.     the US version of MS-DOS 3.30 treats this as an unused function,
  1818.       setting AL=00h and returning immediately; only the Far East versions
  1819.       of MS-DOS 3.2 and 3.3 supported this call
  1820. SeeAlso: AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6302h
  1821. --------D-216302-----------------------------
  1822. INT 21 - DOS 2.25, DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
  1823.     AX = 6302h
  1824. Return: AL = status
  1825.         00h successful
  1826.         DL = current input mode
  1827.             00h return only full characters (clears interim flag)
  1828.             01h return partial characters (sets interim flag)
  1829.         FFh not supported
  1830. Notes:    Novell DOS 7 simply reads the value out of the caller's PSP, so it
  1831.       can return values other than 00h or 01h if the last call to AX=6301h
  1832.       used another value
  1833.     the US version of MS-DOS 3.30 treats this as an unused function,
  1834.       setting AL=00h and returning immediately, WITHOUT setting DL; only
  1835.       the Far East versions of MS-DOS 3.2 and 3.3 supported this call
  1836. SeeAlso: AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6301h
  1837. --------v-216303------------------------
  1838. INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
  1839.     AX = 6303h
  1840. Return: BX = 6303h if resident
  1841. SeeAlso: AX=5643h"VIRUS",AX=6304h"VIRUS",AX=9AD5h"VIRUS"
  1842. --------v-216304------------------------
  1843. INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
  1844.     AX = 6304h
  1845. Return: BX = 6304h if resident
  1846. SeeAlso: AX=6303h"VIRUS",AX=6969h"VIRUS"
  1847. --------D-2164-------------------------------
  1848. INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
  1849.     AH = 64h
  1850.     AL = flag
  1851.         00h (default) call device driver function 5 (non-dest read)
  1852.             before INT 21/AH=01h,08h,0Ah
  1853.         nonzero don't call driver function 5
  1854. Return: nothing (MS-DOS)
  1855.     CF set, AX=error code??? (DR DOS 5.0, which does not support this call)
  1856. Notes:    this function is called by the DOS 3.3+ PRINT.COM
  1857.     under MS-DOS, this function does not use any of the DOS-internal stacks
  1858.       and may thus be called at any time, even during another DOS call
  1859. SeeAlso: AH=01h,AH=08h,AH=0Ah,AX=5D06h
  1860. --------O-2164--DX0000-----------------------
  1861. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
  1862.     AH = 64h
  1863.     DX = 0000h (function number)
  1864.     CX = 636Ch (magic value, "cl")
  1865.     BX = 0000h (indicates special request)
  1866. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1867.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1868. SeeAlso: AH=64h/DX=0001h,INT 21/AH=4Bh
  1869. --------O-2164--DX0001-----------------------
  1870. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
  1871.     AH = 64h
  1872.     DX = 0001h (function number)
  1873.     CX = 636Ch (magic value, "cl")
  1874.     BX = 0000h (indicates special request)
  1875.     ES:DI -> new ASCIZ title (max 12 char) or "" to restore default title
  1876. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1877.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1878. SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0002h,INT 15/AH=12h/BH=05h
  1879. --------O-2164--DX0002-----------------------
  1880. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
  1881.     AH = 64h
  1882.     DX = 0002h (function number)
  1883.     CX = 636Ch (magic value, "cl")
  1884.     BX = 0000h (indicates special request)
  1885.     ES:DI -> 13-byte buffer for current title
  1886. Return: buffer filled (single 00h if title never changed)
  1887. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1888.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1889. SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0001h,INT 15/AH=12h/BH=05h
  1890. --------O-2164--DX0003-----------------------
  1891. INT 21 U - OS/2 v2.1 Virtual DOS Machine - GET LASTDRIVE
  1892.     AH = 64h
  1893.     DX = 0003h (function number)
  1894.     CX = 636Ch (magic value, "cl")
  1895.     BX = 0000h (indicates special request)
  1896. Return: AL = highest drive supported
  1897. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1898.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1899.     used by WinOS2
  1900.     not supported by OS/2 Warp 3.0, check list of lists instead (see #01627)
  1901. SeeAlso: AH=52h
  1902. --------O-2164--DX0004-----------------------
  1903. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
  1904.     AH = 64h
  1905.     DX = 0004h (function number)
  1906.     CX = 636Ch (magic value, "cl")
  1907.     BX = 0000h (indicates special request)
  1908. Return: AX = number of entries in OS/2 JFT for VDM
  1909. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1910.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1911.     in an OS/2 VDM, the DOS Job File Table in the PSP contains an index
  1912.       into the OS/2 JFT in the Per-Task Data Area rather than an SFT index
  1913.       because the OS/2 SFT can contain more than 255 entries
  1914. --------O-2164--DX0005-----------------------
  1915. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
  1916.     AH = 64h
  1917.     DX = 0005h (function number)
  1918.     CX = 636Ch (magic value, "cl")
  1919.     BX = 0000h (indicates special request)
  1920.     DI = DOS file handle
  1921. Return: AX = value of second flags word from OS/2 SFT entry for file
  1922. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1923.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1924.     the OS/2 SFT has two flags words rather than DOS's one word, and this
  1925.       function provides access to the word which is not present in DOS
  1926. --------O-2164--DX0006-----------------------
  1927. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
  1928.     AH = 64h
  1929.     DX = 0006h (function number)
  1930.     CX = 636Ch (magic value, "cl")
  1931.     BX = 0000h (indicates special request)
  1932.     ES:DI -> ASCIZ filespec
  1933.     DS = base address for loading
  1934. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1935.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1936.     this function is only supported by the kernel debugging version of
  1937.       OS2KRNL
  1938. --------O-2164--DX0007-----------------------
  1939. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
  1940.     AH = 64h
  1941.     DX = 0007h (function number)
  1942.     CX = 636Ch (magic value, "cl")
  1943.     BX = 0000h (indicates special request)
  1944. Return: AX = call gate address
  1945. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1946.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1947.     used by WinOS2 to make direct calls to OS2KRNL, bypassing the overhead
  1948.       of DOSKRNL
  1949. --------O-2164--DX0008-----------------------
  1950. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
  1951.     AH = 64h
  1952.     DX = 0008h (function number)
  1953.     CX = 636Ch (magic value, "cl")
  1954.     BX = 0000h (indicates special request)
  1955. Return: DS:DX -> '$'-terminated message "Loading.  Please wait."
  1956. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1957.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1958.     this function permits National Language Support for the initial message
  1959.       displayed while WinOS2 starts a full-screen session
  1960. --------O-2164--CX636C-----------------------
  1961. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
  1962.     AH = 64h
  1963.     CX = 636Ch ("cl")
  1964.     BX = API ordinal (see #01747)
  1965.     other registers as appropriate for API call
  1966. Return: as appropriate for API call
  1967. SeeAlso: AH=64h/BX=0025h,AH=64h/BX=00B6h,AH=64h/BX=00CBh
  1968.  
  1969. (Table 01747)
  1970. Values for OS/2 API ordinal:
  1971.  0025h    DOS32StartSession
  1972.  0082h    DosGetCP
  1973.  00B6h    DosQFSAttach
  1974.  00BFh    DosEditName
  1975.  00CBh    DosForceDelete
  1976.  0144h    Dos32CreateEventSem
  1977.  0145h    Dos32OpenEvenSem
  1978.  0146h    Dos32CloseEventSem
  1979.  0147h    Dos32ResetEventSem
  1980.  0148h    Dos32PostEventSem
  1981.  0149h    Dos32WaitEventSem
  1982.  014Ah    Dos32QueryEventSem
  1983.  014Bh    Dos32CreateMutexSem
  1984.  014Ch    Dos32OpenMutexSem
  1985.  014Dh    Dos32CloseMutexSem
  1986.  014Eh    Dos32RequestMutexSem
  1987.  014Fh    Dos32ReleaseMutexSem
  1988.  0150h    Dos32QueryMutexSem
  1989.  0151h    Dos32CreateMuxWaitSem
  1990.  0152h    Dos32OpenMuxWaitSem
  1991.  0153h    Dos32CloseMuxWaitSem
  1992.  0154h    Dos32WaitMuxWaitSem
  1993.  0155h    Dos32AddMuxWaitSem
  1994.  0156h    Dos32DeleteMuxWaitSem
  1995.  0157h    Dos32QueryMuxWaitSem
  1996. --------O-2164--BX0025-----------------------
  1997. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
  1998.     AH = 64h
  1999.     BX = 0025h (API ordinal)
  2000.     CX = 636Ch ("cl")
  2001.     DS:SI -> STARTDATA structure (see #01748)
  2002. Return: AX = return code
  2003. SeeAlso: AH=64h/CX=636Ch,AH=64h/BX=00B6h
  2004.  
  2005. Format of OS/2 Virtual DOS Machine STARTDATA structure:
  2006. Offset    Size    Description    (Table 01748)
  2007.  00h    WORD    length of structure (must be 0018h,001Eh,0020h,0032h,or 003Ch)
  2008.  02h    WORD    relation of new process to caller (00h independent, 01h child)
  2009.  04h    WORD    fore/background (00h foreground, 01h background)
  2010.  06h    WORD    trace options (00h-02h, 00h = no trace)
  2011.  08h    DWORD    pointer to ASCIZ program title (max 62 chars) or 0000h:0000h
  2012.  0Ch    DWORD    pointer to ASCIZ program name (max 128 chars) or 0000h:0000h
  2013.  10h    DWORD    pointer to ASCIZ program args (max 144 chars) or 0000h:0000h
  2014.  14h    DWORD    "TermQ" (currently reserved, must be 00000000h)
  2015.  18h    DWORD    pointer to environment (max 486 bytes) or 0000h:0000h
  2016.  1Ch    WORD    inheritance (00h or 01h)
  2017.  1Eh    WORD    session type
  2018.         00h OS/2 session manager determines type (default)
  2019.         01h OS/2 full-screen
  2020.         02h OS/2 window
  2021.         03h PM
  2022.         04h VDM full-screen
  2023.         07h VDM window
  2024.  20h    DWORD    pointer to ASCIZ icon filename (max 128 chars) or 0000h:0000h
  2025.  24h    DWORD    "PgmHandle" (currently reserved, must be 00000000h)
  2026.  28h    WORD    "PgmControl"
  2027.  2Ah    WORD    initial column
  2028.  2Ch    WORD    initial row
  2029.  2Eh    WORD    initial width
  2030.  30h    WORD    initial height
  2031.  32h    WORD    reserved (0)
  2032.  34h    DWORD    "ObjectBuffer" (currently reserved, must be 00000000h)
  2033.  38h    DWORD    "ObjectBufferLen" (currently reserved, must be 00000000h)
  2034. --------O-2164--BX00B6-----------------------
  2035. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
  2036.     AH = 64h
  2037.     BX = 00B6h (API ordinal)
  2038.     CX = 636Ch (magic value "cl")
  2039.     DS = user's data segment
  2040.     ES:DI -> FSQAttachStruc (see #01749)
  2041. Return: CF set on error
  2042.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2043.     CF clear if successful
  2044.         AX = 0000h
  2045.         data buffer filled
  2046. SeeAlso: AH=64h/CX=636Ch
  2047.  
  2048. Format of OS/2 Virtual DOS Machine FSQAttachStruc:
  2049. Offset    Size    Description    (Table 01749)
  2050.  00h    DWORD    reserved
  2051.  04h    DWORD    pointer to the offset of the data buffer length
  2052.  08h    DWORD    pointer to the offset of the data buffer
  2053.  0Ch    WORD    FSA Info level
  2054.  0Eh    WORD    ordinal index into table
  2055.  10h    DWORD    pointer to the offset of the device name
  2056. Notes:    The segment value of the buffer, buffer length, and device
  2057.       name MUST all be the same.  It is defined on entry in the DS
  2058.       register.  The details of each info level are defined in the
  2059.       OS/2 CP Reference.
  2060. --------O-2164--BX00CB-----------------------
  2061. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
  2062.     AH = 64h
  2063.     BX = 00CBh (API ordinal)
  2064.     CX = 636Ch (magic value "cl")
  2065.     DS:DX -> ASCIZ filename
  2066. Return: CF clear if successful
  2067.         AX destroyed
  2068.     CF set on error
  2069.         AX = error code (02h,03h,05h) (see #01680 at AH=59h/BX=0000h)
  2070. Desc:    delete a file without saving it to the undelete directory
  2071. SeeAlso: AH=41h,AH=64h/CX=636Ch
  2072. ----------216500-----------------------------
  2073. INT 21 - Windows95 (OSR2) - SET GENERAL INTERNATIONALIZATION INFO
  2074.     AX = 6500h
  2075.     ES:DI -> buffer containing internationalization info (see #01750)
  2076.     CX = size of buffer (>= 7)
  2077. Return: CF clear if successful
  2078.         AX = system code page
  2079.         CX = number of bytes copied from supplied buffer
  2080.     CF set on error
  2081.         AX = error code
  2082. Note:    this function will not overwrite the country or code-page numbers,
  2083.       but can be used to modify all other data about the country and
  2084.       code page
  2085. SeeAlso: AH=65h"GET EXTENDED",AH=70h
  2086. --------D-2165-------------------------------
  2087. INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
  2088.     AH = 65h
  2089.     AL = info ID
  2090.         01h get general internationalization info (see also AX=6500h)
  2091.         02h get pointer to uppercase table
  2092.         03h (DOS 6.2+ COUNTRY.SYS) get pointer to lowercase table
  2093.         04h get pointer to filename uppercase table
  2094.         05h get pointer to filename terminator table
  2095.         06h get pointer to collating sequence table
  2096.         07h (DOS 4.0+) get pointer to Double-Byte Character Set table
  2097.     BX = code page (FFFFh=global code page) (see #01757)
  2098.     DX = country ID (FFFFh=current country)
  2099.     ES:DI -> country information buffer (see #01750)
  2100.     CX = size of buffer (>= 5)
  2101. Return: CF set on error
  2102.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2103.     CF clear if successful
  2104.         CX = size of country information returned
  2105.         ES:DI -> country information (see #01750)
  2106. Notes:    AL=05h appears to return same info for all countries and codepages; it
  2107.       has been documented for DOS 5+, but was undocumented in earlier
  2108.       versions
  2109.     NLSFUNC must be installed to get info for countries other than the
  2110.       default
  2111.     subfunctions 02h and 04h are identical under OS/2
  2112.     subfunction 03h apparently supports only codepage 866 in DOS 6.2x
  2113. SeeAlso: AH=38h,AH=70h"MS-DOS 7",INT 2F/AX=1401h,INT 2F/AX=1402h
  2114. SeeAlso: INT 2F/AX=14FEh
  2115.  
  2116. Format of country information:
  2117. Offset    Size    Description    (Table 01750)
  2118.  00h    BYTE    info ID
  2119. ---if info ID = 01h---
  2120.  01h    WORD    size of following info in bytes
  2121.  03h    WORD    country ID (see #01400 at AH=38h)
  2122.  05h    WORD    code page (see #01757)
  2123.  07h 34 BYTEs    country-dependent info (see #01399 at AH=38h)
  2124. ---if info ID = 02h---
  2125.  01h    DWORD    pointer to uppercase table (see #01751)
  2126. ---if info ID = 03h---
  2127.  01h    DWORD    pointer to lowercase table (see #01752)
  2128. ---if info ID = 04h---
  2129.  01h    DWORD    pointer to filename uppercase table (see #01753)
  2130. ---if info ID = 05h---
  2131.  01h    DWORD    pointer to filename character table (see #01754)
  2132. ---if info ID = 06h---
  2133.  01h    DWORD    pointer to collating table (see #01755)
  2134. ---if info ID = 07h (DOS 4.0+)---
  2135.  01h    DWORD    pointer to DBCS lead byte table (see #01756)
  2136. SeeAlso: #01775
  2137.  
  2138. Format of uppercase table:
  2139. Offset    Size    Description    (Table 01751)
  2140.  00h    WORD    table size (0080h)
  2141.  02h 128 BYTEs    uppercase equivalents (if any) of chars 80h to FFh
  2142. SeeAlso: #01750,#01753
  2143.  
  2144. Format of lowercase table:
  2145. Offset    Size    Description    (Table 01752)
  2146.  00h    WORD    table size (0100h)
  2147.  02h 256 BYTEs    lowercase equivalents (if any) of chars 00h to FFh
  2148. SeeAlso: #01750,#01753
  2149.  
  2150. Format of filename uppercase table:
  2151. Offset    Size    Description    (Table 01753)
  2152.  00h    WORD    table size (0080h)
  2153.  02h 128 BYTEs    uppercase equivalents (if any) of chars 80h to FFh
  2154. SeeAlso: #01750,#01751
  2155.  
  2156. Format of filename terminator table:
  2157. Offset    Size    Description    (Table 01754)
  2158.  00h    WORD    table size (not counting this word)
  2159.  02h    BYTE    ??? (01h for MS-DOS 3.30-6.00)
  2160.  03h    BYTE    lowest permissible character value for filename
  2161.  04h    BYTE    highest permissible character value for filename
  2162.  05h    BYTE    ??? (00h for MS-DOS 3.30-6.00)
  2163.  06h    BYTE    first excluded character in range \ all characters in this
  2164.  07h    BYTE    last excluded character in range  / range are illegal
  2165.  08h    BYTE    ??? (02h for MS-DOS 3.30-6.00)
  2166.  09h    BYTE    number of illegal (terminator) characters
  2167.  0Ah  N BYTEs    characters which terminate a filename:    ."/\[]:|<>+=;,
  2168. Note:    partially documented for DOS 5+, but undocumented for earlier versions
  2169. SeeAlso: #01750
  2170.  
  2171. Format of collating table:
  2172. Offset    Size    Description    (Table 01755)
  2173.  00h    WORD    table size (0100h)
  2174.  02h 256 BYTEs    values used to sort characters 00h to FFh
  2175. SeeAlso: #01750
  2176.  
  2177. Format of DBCS lead byte table:
  2178. Offset    Size    Description    (Table 01756)
  2179.  00h    WORD    length of table in ranges
  2180.  02h 2N BYTEs    start/end for N lead byte ranges
  2181.     WORD    0000h    (end of table)
  2182. SeeAlso: #01750
  2183. --------D-2165-------------------------------
  2184. INT 21 - DOS 4.0+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
  2185.     AH = 65h
  2186.     AL = function
  2187.         20h capitalize character
  2188.         DL = character to capitalize
  2189.         Return: DL = capitalized character
  2190.         21h capitalize string
  2191.         DS:DX -> string to capitalize
  2192.         CX = length of string
  2193.         22h capitalize ASCIZ string
  2194.         DS:DX -> ASCIZ string to capitalize
  2195. Return: CF set on error
  2196.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2197.     CF clear if successful
  2198. Note:    these calls have been documented for DOS 5+, but were undocumented in
  2199.       DOS 4.x.
  2200. BUG:    Novell DOS 7 Update 15 crashes on AX=6521h when CX=0000h
  2201. --------D-216523-----------------------------
  2202. INT 21 U - DOS 4.0+ - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
  2203.     AX = 6523h
  2204.     DL = character
  2205.     DH = second character of double-byte character (if applicable)
  2206. Return: CF set on error
  2207.     CF clear if successful
  2208.         AX = type
  2209.         00h no
  2210.         01h yes
  2211.         02h neither yes nor no
  2212. Note:    supported by Novell DOS 7, though prior to Update 14, the results
  2213.       depended on the kernel variant rather than the YESCHAR= or COUNTRY=
  2214.       setting in CONFIG.SYS
  2215. BUG:    Novell DOS commands and tools all use internal settings rather than
  2216.       this function, so the Yes/No responses are dependent on the specific
  2217.       country's variant being run rather than on the COUNTRY= setting
  2218. --------D-2165-------------------------------
  2219. INT 21 U - DOS 4.0+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
  2220.     AH = 65h
  2221.     AL = function
  2222.         A0h capitalize filename character
  2223.         DL = character to capitalize
  2224.         Return: DL = capitalized character
  2225.         A1h capitalize counted filename string
  2226.         DS:DX -> filename string to capitalize
  2227.         CX = length of string
  2228.         A2h capitalize ASCIZ filename
  2229.         DS:DX -> ASCIZ filename to capitalize
  2230. Return: CF set on error
  2231.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2232.     CF clear if successful
  2233. Note:    nonfunctional in MS-DOS 4.00 through 6.00 due to a bug (the code sets a
  2234.       pointer depending on the high bit of AL, but doesn't clear the
  2235.       bit before branching by function number).  Supported and
  2236.       functional(!) in Novell DOS 7 (Update 15)
  2237. --------D-216601-----------------------------
  2238. INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
  2239.     AX = 6601h
  2240. Return: CF set on error
  2241.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2242.     CF clear if successful
  2243.         BX = active code page (see #01757)
  2244.         DX = system code page (see #01757)
  2245. SeeAlso: AX=6602h
  2246. --------D-216602-----------------------------
  2247. INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
  2248.     AX = 6602h
  2249.     BX = active code page (see #01757)
  2250.     DX = system code page (active page at boot time)
  2251. Return: CF set on error
  2252.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2253.     CF clear if successful
  2254.         AX = EB41h (Novell NWDOS v7.0 when NLSFUNC not installed and
  2255.           request was for previously-active code page)
  2256. SeeAlso: AX=6601h,INT 2F/AX=14FFh
  2257.  
  2258. (Table 01757)
  2259. Values for code page:
  2260.  0    Reduced 7-bit ASCII            [NetWare]
  2261.  37    EBCDIC: US/Canada English (CECP)    [Windows NT 3.51+]
  2262.  38    EBCDIC: International (old)
  2263.  111    Greek
  2264.  112    Turkish
  2265.  113    Yugoslavian
  2266.  161    Arabic                    [Linux]
  2267.  162    Arabic                    [Linux]
  2268.  163    Arabic                    [Linux]
  2269.  164    Arabic                    [Linux]
  2270.  165    Arabic                    [Linux]
  2271.  237    EBCDIC: Germany (CECP)
  2272.  273    EBCDIC: ??? (CECP)
  2273.  274    EBCDIC: Belgium
  2274.  275    EBCDIC: Brazilian
  2275.  277    EBCDIC: Danish/Norwegian (CECP)
  2276.  278    EBCDIC: Finnish/Swedish (CECP)
  2277.  280    EBCDIC: Italian (CECP)
  2278.  281    EBCDIC: Japanese-E
  2279.  284    EBCDIC: Latin-American/Spanish (CECP)
  2280.  285    EBCDIC: UK English (CECP)
  2281.  290    EBCDIC: Japanese Kana
  2282.  297    EBCDIC: French (CECP)
  2283.  367    US-ASCII (ISO 646-US, 7-bit)
  2284.  420    EBCDIC: Arabic 1
  2285.  423    EBCDIC: Greek
  2286.  424    EBCDIC: Hebrew
  2287.  437    US / English / PC-8 / IBM-2
  2288.  500    EBCDIC: Belgium/Switzerland (CECP)
  2289.  500    EBCDIC: International
  2290.  646    (??? reserved for ISO 646 7-bit codepages)
  2291.  667    Eastern Europe (Polish)
  2292.  668    Eastern Europe (Slavic)
  2293.  708    Arabic/Middle East
  2294.  737    Greek (2)
  2295.  775    Baltic / Baltic Rim
  2296.  819    Latin-1 (ISO 8859-1)
  2297.  850    Multilingual (Latin-1)
  2298.  851    Greek
  2299.  852    Slavic/Easter Europe (Latin-2)        [DOS 5+]
  2300.  853    Turkish (Latin-2)
  2301.  854    Spanish
  2302.  855    Cyrilic (1)
  2303.  857    Turkish
  2304.  860    Portugese
  2305.  861    Icelandic
  2306.  862    Hebrew
  2307.  863    French Canadian
  2308.  864    Arabic/Middle East
  2309.  865    Nordic (Norwegian/Danish)
  2310.  866    Russian (Cyrillic 2)
  2311.  867    Czech
  2312.  868    Arabic
  2313.  869    Greek (1)
  2314.  870    EBCDIC: Yugoslavia (Roece)
  2315.  871    EBCDIC: Icelandic
  2316.  874    Thailand
  2317.  875    EBCDIC: Greek
  2318.  880    Russian (Cyrillic GOST)
  2319.  880    EBCDIC: Cyrillic
  2320.  881    Latin 1 (ISO 8859-1)
  2321.  882    Latin 2 (ISO 8859-2)
  2322.  883    Latin 3 (ISO 8859-3)
  2323.  884    Latin 4 (ISO 8859-4)
  2324.  885    Latin 5 (ISO 8859-5)
  2325.  891    unknown
  2326.  897    Japanese (Shift-JIS)
  2327.  903    unknown
  2328.  904    unknown
  2329.  905    EBCDIC: Turkish
  2330.  912    Latin 2 (ISO 8859-2: Eastern Europe)
  2331.  913    (??? reserved for Latin 3)
  2332.  914    (??? reserved for Latin 4)
  2333.  915    Cyrillic (ISO 8859-5: Latin/Cyrillic)
  2334.  916    (??? reserved for ISO 8859-6: Latin/Arabic)
  2335.  917    (??? reserved for ISO 8859-7: Latin/Greek)
  2336.  918    EBCDIC: Arabic 2
  2337.  919    (??? reserved for ISO 8859-9: Latin 5)
  2338.  920    (??? reserved for ISO 8859-10: Latin 6/Sami)
  2339.  932    DBCS: Japanese (Shift-JIS)
  2340.  934    DBCS: Korean
  2341.  936    DBCS: Chinese (PRC/ROC, Simplified/xGB)
  2342.  938    DBCS: Taiwan
  2343.  938    DBCS: Chinese (PRC/ROC)
  2344.  942    DBCS: Japanese SAA
  2345.  944    DBCS: Korean SAA
  2346.  948    DBCS: Chinese SAA (PRC/ROC)
  2347.  949    Korean (Unified Hangul; Extended Wansung)
  2348.  950    Chinese Traditional, Big5 (Taiwan, Hong Kong)
  2349.  966    Saudi Arabian
  2350.  972    Hebrew (Israeli VT100)
  2351.  999    reserved for user-definable codepages
  2352. 1004    Desktop Publishing
  2353. 1026    EBCDIC: Turkish (Latin 5)
  2354. 1047    EBCDIC: International (CECP, de-facto EBCDIC-US)
  2355. 1250    MSWIN: Eastern Europe (Latin 2)
  2356. 1251    MSWIN: Cyrillic
  2357. 1252    MSWIN: English/W. Europe/Standard (Latin 1)
  2358. 1253    MSWIN: Greek (GRC)
  2359. 1254    MSWIN: Turkish
  2360. 1255    MSWIN: Hebrew
  2361. 1256    MSWIN: Arabic
  2362. 1257    MSWIN: Baltic (Estonian, Latvian, Lithuanian)
  2363. 1258    MSWIN: Vietnamese
  2364. 1361    ANSI???: Korean (Johab)
  2365. 10000    MAC: International/Standard (Roman)
  2366. 10006    MAC: Greek
  2367. 10007    MAC: Cyrillic
  2368. 10029    MAC: Latin 2
  2369. 10079    MAC: Icelandic
  2370. 10081    MAC: Turkish
  2371. 10646    (should be reserved for the future ISO 10646 32-bit codepage???)
  2372. 65400    OS/2: reserved for Glyphs
  2373. Notes:    not all code pages are available in all versions of DOS or
  2374.       DOS-compatibles, and many (particularly EBCDIC) have not been
  2375.       implemented for *any* DOS to date
  2376.     CECP = 'Country Extended CodePage' by IBM.
  2377.     Unicode (UCS-2) is a 16-bit character codeset, covering all commonly
  2378.       used characters from almost any language. Not all definitions are
  2379.       fixed at the time of this writing. Unicode will be the future of
  2380.       character coding for the foreseeable future, but is only the
  2381.       "basic multilingual plane" (BMP) subset of 32-bit ISO 10646 codes
  2382.       (UCS-4), a single character set standard covering requirements for
  2383.       all countries and languages, which is still under construction.
  2384.     The MS Windows 'ANSI' codepage 1252 (based on the MS Windows 3.0+
  2385.       implementation) appears to be 100% compatible with the code sets
  2386.       used by Amiga OS and Acorn Archimedes RISC-OS and is also a linear
  2387.       subset of the 16bit UniCode code set (UCS-2); the actual ANSI
  2388.       codepage is defined by ISO 8859-1 (Latin 1).
  2389.     At least applications for OS/2 Warp 3 Presentation Manager can use
  2390.       EBCDIC codepages, but the codepage ID assignments for EBCDIC
  2391.       codepages are not known for OS/2. OS/2 SAA codepages are not
  2392.       supported in CONFIG.SYS.  Codepage 65400 "Glyphs" is not actually a
  2393.       codepage, but a way to directly access the first 256 of the 383
  2394.       glyphs from the current font set.
  2395.     Novell DOS 7/DR DOS 6/Caldera OpenDOS undocumented codepage 853
  2396.       does not necessarily match with MS-DOS' undocumented codepage 853.
  2397.     Undocumented codepages 667 and 668 can be found in Russian's PTS/DOS
  2398.       6.51 and S/DOS 1.x DISPLAY.CPI and contain some Eastern European
  2399.       characters.
  2400.     Novell NetWare 3.xx clients support UniCode and codepages 437, 850,
  2401.       860, 863, 865, 897, 932, and 1252 (possibly more). NetWare 4.xx
  2402.       clients also support 1250, 1251, 1256. Personal NetWare 1.0 (PNW),
  2403.       as it was distributed in Europe, supports UniCode and codepages 437,
  2404.       850 and 1252.     Novell's Client32 for DOS/Windows supports 874, 932,
  2405.       936, 949, 950, 1250 - 1257. For codesets not yet available, Novell
  2406.       offers a reduced ASCII 7-bit support through a codepage 0 used as a
  2407.       translation table to UniCode, that supports characters 32-127 except
  2408.       92 ('\').
  2409.  
  2410. Format of DOS .CPI (Code Page Information) file header:
  2411. Offset    Size    Description    (Table 01758)
  2412.  00h    BYTE    ID tag
  2413.         FFh FONT file (Standard for generic display or
  2414.               printer font files used by MS-DOS, PC-DOS, DR DOS
  2415.               and Novell DOS)
  2416.         7Fh DRFONT file (Used by DR DOS 6.0 / Novell DOS 7 for
  2417.               enhanced & compressed display font files. DR DOS 6.0
  2418.               and Novell DOS 7 still support the standard FONT
  2419.               files, thus allowing leaning of .CPI files from
  2420.               MS-DOS to DR DOS / Novell DOS!)
  2421.  01h  7 BYTEs    ID string
  2422.         "FONT    " = FONT file (Standard for display or printer)
  2423.         "DRFONT " = DRFONT file (Enhanced compressed format used
  2424.                 by DR DOS 6.0 / Novell DOS 7 for display fonts)
  2425.  08h  8 BYTEs    reserved (0)
  2426.  10h    WORD    number of pointers (1)
  2427.  12h    BYTE    type of pointers (1)
  2428.  13h    DWORD    pointer to file offset of FontInfoHeader
  2429.         (Generally pointing to the byte just after FontFileHeader,
  2430.              that is 0000h:0017h. Due to extra data at offset 17h, this
  2431.              value has changed with DR DOS 6.0 / Novell DOS 7 DRFONTs!
  2432.              "MS-DOS 4.0 programmers reference" claimed word offset
  2433.              +15h as an endmarker (0000h), but actually it is the
  2434.              High-Word of the pointer.)
  2435. --- Extended FontFileHeader with DR DOS 6.0 / Novell DOS 7 DRFONTs: ---
  2436.  17h    BYTE    number of fonts per codepage supported by this file
  2437.              (N=4 with both DR DOS 6.0 / Novell DOS 7 DRFONT files)
  2438.  18h  N    BYTEs    cellsize (Height) of fonts 1..N
  2439.         the cellsize corresponds with the character boxes height,
  2440.           but is also the count of bytes used for each of the
  2441.           characters inside the font data (as currently all fonts
  2442.           are organized heightx8 and 8 pixel width is just one byte).
  2443.  var  N DWORDs    file offsets of DisplayFontData.
  2444.  
  2445. Format of DOS .CPI file Font Information Header:
  2446. Offset    Size    Description    (Table 01759)
  2447.  00h    WORD    number of codepage entries
  2448.     var    N codepage entry headers (see #01760)
  2449. SeeAlso: #01758
  2450.  
  2451. Format of DOS .CPI file CodePage Entry Header:
  2452. Offset    Size    Description    (Table 01760)
  2453.  00h    WORD    size of this header (normally 1Ch)
  2454.  02h    DWORD    offset of next entry, or 0000h:0000h or FFFFh:FFFFh if last
  2455.         (if a valid "next" pointer but all of the fonts indicated in
  2456.           the .CPI header have been processed, this field normally
  2457.           points at an optional text area at the end of the .CPI file
  2458.           containing copyright information)
  2459.  06h    WORD    device type
  2460.         01h display (FONT or DRFONT)
  2461.         02h printer (FONT)
  2462.  08h  8 BYTEs    blank-padded device name string
  2463.  10h    WORD    code page (see #01757)
  2464.  12h  3 WORDs    reserved (0)
  2465.  18h    DWORD    pointer to Font Data Header (see #00222)
  2466.         normally immediately follows this header
  2467. SeeAlso: #01758
  2468.  
  2469. Format of DOS .CPI file Font Data Header:
  2470. Offset    Size    Description    (Table 01761)
  2471.  00h    WORD    record type
  2472.         0001h FONT
  2473.         0002h DRFONT (DR DOS 6.0/Novell DOS 7 display font)
  2474.  02h    WORD    number of fonts
  2475.  04h    WORD    length of font data (display fonts)
  2476.         ??? (printer fonts)
  2477.  06h    var    font data (#fonts * fontlength) bytes
  2478. SeeAlso: #01758
  2479.  
  2480. Format of DOS .CPI file ScreenFONT Header:
  2481. Offset    Size    Description    (Table 01762)
  2482.  00h  6 BYTEs    display-font header (see #01764)
  2483.  06h    var    display font data
  2484. SeeAlso: #01758
  2485.  
  2486. Format of .CPI file DRFONT Header:
  2487. Offset    Size    Description    (Table 01763)
  2488.  00h 6N BYTEs    DisplayFONT headers for N fonts (see #01764)
  2489.       M WORDs    character index table for cell offsets in font data
  2490.         currently 256 words in length
  2491. SeeAlso: #01758
  2492.  
  2493. Format of .CPI file DisplayFONT header:
  2494. Offset    Size    Description    (Table 01764)
  2495.  00h    BYTE    height of character cell
  2496.  01h    BYTE    width of character cell (currently always 08h)
  2497.  02h    BYTE    aspect ratio (height) (currently 00h, unused)
  2498.  03h    BYTE    aspect ratio (width) (currently 00h, unused)
  2499.  04h    WORD    number of characters per font (256)
  2500. SeeAlso: #01758
  2501.  
  2502. Format of .CPI file PrinterFONT header:
  2503. Offset    Size    Description    (Table 01765)
  2504.  00h    WORD    type of printer
  2505.         0001h (4201.CPI, 1050.CPI, EPS.CPI)
  2506.         0002h (4208.CPI, 5202.CPI, PPDS.CPI)
  2507.  02h    WORD    bytes per hardware/download codepage-select escape sequence
  2508.         (max 31, typically 12)
  2509.  04h  N BYTEs    escape sequence to select hardware codepage
  2510.       N BYTEs    escape sequence to select download codepage
  2511.     var    download data for printer font (including escape sequence to
  2512.           transfer data)
  2513. SeeAlso: #01758
  2514. --------D-2167-------------------------------
  2515. INT 21 - DOS 3.3+ - SET HANDLE COUNT
  2516.     AH = 67h
  2517.     BX = size of new file handle table for process
  2518. Return: CF clear if successful
  2519.     CF set on error
  2520.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2521. Desc:    adjust the size of the per-process open file table, thus raising or
  2522.       lowering the limit on the number of files the caller can open
  2523.       simultaneously
  2524. Notes:    if BX <= 20, no action is taken if the handle limit has not yet been
  2525.       increased, and the table is copied back into the PSP if the limit
  2526.       is currently > 20 handles
  2527.     for file handle tables of > 20 handles, DOS 3.30 never reuses the
  2528.       same memory block, even if the limit is being reduced; this can lead
  2529.       to memory fragmentation as a new block is allocated and the existing
  2530.       one freed
  2531.     only the first 20 handles are copied to child processes in DOS 3.3-6.0
  2532.     increasing the file handles here will not, in general, increase the
  2533.       number of files that can be opened using the runtime library of a
  2534.       high-level language such as C
  2535.     Novell DOS 7 reportedly terminates the calling program if the JFT is
  2536.       being reduced in size and there are any open file handles beyond
  2537.       the portion of the JFT being retained
  2538. BUGS:    the original release of DOS 3.30 allocates a full 64K for the handle
  2539.       table on requests for an even number of handles
  2540.     DR DOS 3.41 and 5.0 will lose track of any open file handles beyond
  2541.       the portion of the JFT retained after the call; MS-DOS will indicate
  2542.       error 04h if any of the JFT entries to be removed are open
  2543. SeeAlso: AH=26h,AH=86h
  2544. --------D-2168-------------------------------
  2545. INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
  2546.     AH = 68h
  2547.     BX = file handle
  2548. Return: CF clear if successful
  2549.         all data still in DOS disk buffers is written to disk immediately,
  2550.           and the file's directory entry is updated
  2551.     CF set on error
  2552.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2553. SeeAlso: AX=5D01h,AH=6Ah,INT 2F/AX=1107h
  2554. --------D-2169-------------------------------
  2555. INT 21 U - DOS 4.0+ internal - GET/SET DISK SERIAL NUMBER
  2556.     AH = 69h
  2557.     AL = subfunction
  2558.         00h get serial number
  2559.         01h set serial number
  2560.     BL = drive (0=default, 1=A, 2=B, etc)
  2561.     BH = info level (00h only for DOS; OS/2 allows other levels)
  2562.     DS:DX -> disk info (see #01766)
  2563. Return: CF set on error
  2564.         AX = error code (see #01680 at AH=59h/BX=0000h)
  2565.     CF clear if successful
  2566.         AX destroyed
  2567.         (AL = 00h) buffer filled with appropriate values from extended BPB
  2568.         (AL = 01h) extended BPB on disk set to values from buffer
  2569. Notes:    does not generate a critical error; all errors are returned in AX
  2570.     error 0005h given if no extended BPB on disk
  2571.     does not work on network drives (error 0001h)
  2572.     buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
  2573.       extended BPB on disk
  2574.     this function is supported under Novell NetWare versions 2.0A through
  2575.       3.11; the returned serial number is the one a DIR would display,
  2576.       the volume label is the NetWare volume label, and the file system
  2577.       is set to "FAT16".
  2578.     this function is not supported by Novell DOS 7 through Update 13, but
  2579.       Personal NetWare 1.0 and Update 15 do support this function
  2580.     the serial number is computed from the current date and time when the
  2581.       disk is created; the first part is the sum of the seconds/hundredths
  2582.       and month/day, the second part is the sum of the hours/minutes and
  2583.       year
  2584.     the volume label which is read or set is the one stored in the extended
  2585.       BPB on disks formatted with DOS 4.0+, rather than the special root
  2586.       directory entry used by the DIR command in COMMAND.COM (use AH=11h
  2587.       to find that volume label)
  2588. SeeAlso: AX=440Dh"DOS 3.2+"
  2589.  
  2590. Format of disk info:
  2591. Offset    Size    Description    (Table 01766)
  2592.  00h    WORD    0000h (info level)
  2593.  02h    DWORD    disk serial number (binary)
  2594.  06h 11 BYTEs    volume label or "NO NAME    " if none present
  2595.  11h  8 BYTEs    (AL=00h only) filesystem type (see #01767)
  2596. Note:    under MS-DOS 7.0 or a Windows95 DOS box, the volume label field can be
  2597.       all blanks even when a volume label has been set (the Win95
  2598.       installation seems to blank the volume label field in the partition
  2599.       boot sector; once LABEL has been run, the volume label is reported
  2600.       correctly)
  2601. SeeAlso: AH=4Eh
  2602.  
  2603. (Table 01767)
  2604. Values for filesystem type:
  2605.  "FAT12      "    12-bit FAT
  2606.  "FAT16      "    16-bit FAT
  2607.  "CDROM      "    High-Sierra CD-ROM filesystem
  2608.  "CD001      "    ISO 9660 CD-ROM filesystem
  2609.  "CDAUDIO "    audio CD
  2610. SeeAlso: #01766
  2611. --------O-2169-------------------------------
  2612. INT 21 - DR DOS 5.0 - NULL FUNCTION
  2613.     AH = 69h
  2614. Return: AL = 00h
  2615. SeeAlso: AH=18h
  2616. --------v-216969-----------------------------
  2617. INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
  2618.     AX = 6969h
  2619. Return: AX = 0666h if resident
  2620. SeeAlso: AX=58CCh,AX=6304h"VIRUS",AH=71h"VIRUS"
  2621. --------d-2169FFDX0000-----------------------
  2622. INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
  2623.     AX = 69FFh
  2624.     DX = 0000h
  2625.     BX = CB00h (magic value)
  2626. Return: ES:BX -> CUBITR.EXE handler for INT 21
  2627. InstallCheck:    test that the first eight bytes at the returned interrupt
  2628.       handler are EBh 07h "CUBITR" (a short jump around the signature
  2629.       followed by the signature)
  2630. Note:    the byte following the signature (i.e. ES:[BX+8]) indicates whether
  2631.       CUBITR is active (01h) or disabled (00h)
  2632. SeeAlso: AX=69FFh/DX=CFBFh
  2633. Index:    installation check;CUBIT
  2634. --------d-2169FFDXCFBF-----------------------
  2635. INT 21 U - CUBIT v4.00 - UNINSTALL
  2636.     AX = 69FFh
  2637.     DX = CFBFh
  2638.     CX = EFCFh
  2639.     BX = CB00h (magic value)
  2640. Return: ES:BX -> CUBITR.EXE handler for INT 21
  2641.     CX = status
  2642.         2020h successful
  2643.         2222h failed
  2644. Note:    if DX is neither 0000h nor CFBFh on entry, some other code is executed
  2645. SeeAlso: AX=69FFh/DX=0000h
  2646. --------D-216A-------------------------------
  2647. INT 21 U - DOS 4.0+ - COMMIT FILE
  2648.     AH = 6Ah
  2649.     BX = file handle
  2650. Return: CF clear if successful
  2651.         AH = 68h
  2652.     CF set on error
  2653.         AX = error code (06h) (see #01680 at AH=59h/BX=0000h)
  2654. Note:    identical to AH=68h in DOS 5.0-6.0; not known whether this is the case
  2655.       in DOS 4.x
  2656. SeeAlso: AH=68h
  2657. --------D-216B-------------------------------
  2658. INT 21 U - DOS 4.0 internal - IFS IOCTL
  2659.     AH = 6Bh
  2660.     AL = subfunction
  2661.         00h ???
  2662.         DS:SI -> Current Directory Structure???
  2663.         CL = drive (1=A:)
  2664.         01h ???
  2665.         DS:SI -> ???
  2666.         CL = file handle???
  2667.         02h ???
  2668.         DS:SI -> Current Directory Structure???
  2669.         DI = ???
  2670.         CX = drive (1=A:)
  2671. Return: CF set on error
  2672.         AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
  2673.     CF clear if successful
  2674. Notes:    passed through to INT 2F/AX=112Fh with AX on top of stack
  2675.     Novell DOS 7 Update 15 returns CF set/AX=0001h (invalid function)
  2676. SeeAlso: AH=6Bh"DOS 5",INT 2F/AX=112Fh
  2677. --------D-216B-------------------------------
  2678. INT 21 U - DOS 5+ - NULL FUNCTION
  2679.     AH = 6Bh
  2680. Return: AL = 00h
  2681. Note:    this function does nothing and returns immediately
  2682. SeeAlso: AH=6Bh"DOS 4"
  2683. --------D-216C00-----------------------------
  2684. INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
  2685.     AX = 6C00h
  2686.     BL = open mode as in AL for normal open (see also AH=3Dh)
  2687.         bit 7: inheritance
  2688.         bits 4-6: sharing mode
  2689.         bit 3 reserved
  2690.         bits 0-2: access mode
  2691.         100 read-only, do not modify file's last-access time (DOS 7.0)
  2692.     BH = flags
  2693.         bit 6 = auto commit on every write (see also AH=68h)
  2694.         bit 5 = return error rather than doing INT 24h
  2695.         bit 4 = (FAT32) extended size (allow 4GB files instead of 2GB)
  2696.     CX = create attribute (see #01769)
  2697.     DL = action if file exists/does not exist (see #01770)
  2698.     DH = 00h (reserved)
  2699.     DS:SI -> ASCIZ file name
  2700. Return: CF set on error
  2701.        AX = error code (see #01680 at AH=59h/BX=0000h)
  2702.     CF clear if successful
  2703.        AX = file handle
  2704.        CX = status (see #01768)
  2705. Notes:    the PC LAN Program only supports existence actions (in DL) of 01h,
  2706.       10h with sharing=compatibility, and 12h
  2707.     DR DOS reportedly does not support this function and does not return
  2708.       an "invalid function call" error when this function is used.
  2709.     the documented bits of BX are stored in the SFT when the file is opened
  2710.       (see #01641,#01642)
  2711. BUG:    this function has bugs (at least in DOS 5.0 and 6.2) when used with
  2712.       drives handled via the network redirector (INT 2F/AX=112Eh):
  2713.         - CX (attribute) is not passed to the redirector if DL=11h,
  2714.         - CX does not return the status, it is returned unchanged because
  2715.           DOS does a PUSH CX/POP CX when calling the redirector.
  2716. SeeAlso: AH=3Ch,AH=3Dh,AX=6C01h,AX=7160h/CL=00h,INT 2F/AX=112Eh
  2717.  
  2718. (Table 01768)
  2719. Values for extended open function status:
  2720.  01h    file opened
  2721.  02h    file created
  2722.  03h    file replaced
  2723.  
  2724. Bitfields for file create attribute:
  2725. Bit(s)    Description    (Table 01769)
  2726.  6-15    reserved
  2727.  5    archive
  2728.  4    reserved
  2729.  3    volume label
  2730.  2    system
  2731.  1    hidden
  2732.  0    readonly
  2733.  
  2734. Bitfields for action:
  2735. Bit(s)    Description    (Table 01770)
  2736.  7-4    action if file does not exist
  2737.     0000 fail
  2738.     0001 create
  2739.  3-0    action if file exists
  2740.     0000 fail
  2741.     0001 open
  2742.     0010 replace/open
  2743. --------O-216C01-----------------------------
  2744. INT 21 U - OS/2 v2.0 - "DosOpen2"
  2745.     AX = 6C01h
  2746.     BL = open mode as in AL for normal open (see also AH=3Dh)
  2747.         bit 7: inheritance
  2748.         bits 4-6: sharing mode
  2749.         bit 3 reserved
  2750.         bits 0-2: access mode
  2751.     BH = flags
  2752.         bit 6 = auto commit on every write (see also AH=68h)
  2753.         bit 5 = return error rather than doing INT 24h
  2754.     CX = create attribute (see #01769)
  2755.     DL = action if file exists/does not exist (see #01770)
  2756.     DH = 00h (reserved)
  2757.     DS:SI -> ASCIZ file name
  2758.     ES:DI -> EAOP structure
  2759. Return: CF set on error
  2760.        AX = error code (see #01680 at AH=59h/BX=0000h)
  2761.     CF clear if successful
  2762.        AX = file handle
  2763.        CX = status (see #01768)
  2764. Note:    this function is virtually identical to AX=6C00h, but supports OS/2's
  2765.       extended attributes
  2766. SeeAlso: AX=5704h,AX=6C00h,AH=6Fh"OS/2"
  2767. --------D-216D-------------------------------
  2768. INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
  2769.     AH = 6Dh
  2770.     DS:DX -> ASCIZ program name (may contain wildcrds)
  2771. Return: CF clear if found
  2772.         Disk Transfer Area filled with ROM search structure (see #01771)
  2773.     CF set if not found
  2774.         AX = error code
  2775.         0002h name not found in ROM
  2776.         0003h name contains colon or backslash
  2777.     ---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
  2778.     AL = 00h
  2779. Notes:    the '*' wildcard matches all remaining characters in a ROM program's
  2780.       name; any following characters in the search mask are ignored up to
  2781.       another asterisk, which must be matched by an asterisk in the
  2782.       found program's name.
  2783.     the search mask and program names may contain multiple periods
  2784. SeeAlso: AH=1Ah,AH=4Eh,AH=6Eh,AX=6F00h,AX=6F02h,INT 2F/AX=160Ch
  2785.  
  2786. Format of ROM search structure:
  2787. Offset    Size    Description    (Table 01771)
  2788.  00h 13 BYTEs    ASCIZ name of found ROM program
  2789.  0Dh    DWORD    address at which to resume search (do not modify)
  2790.  11h    var    ASCIZ search mask passed in (do not modify)
  2791. --------O-216D-------------------------------
  2792. INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
  2793.     AH = 6Dh
  2794.     ???
  2795. Return: ???
  2796. Desc:    create a new directory, with extended attribute information
  2797. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2798. BUG:    does not work under OS/2 v2.0 because MVDM does not translate the
  2799.       real-mode segment pointer in the Extended Attribute structure
  2800.       (see #01673) into a protected-mode selector; use AH=39h followed by
  2801.       AX=5703h instead
  2802. SeeAlso: AH=39h,AX=5702h"OS/2",AX=5703h"OS/2"
  2803. --------O-216D-------------------------------
  2804. INT 21 U - Novell DOS 7 - NOP
  2805.     AH = 6Dh
  2806. Return: AX = 0000h
  2807. Note:    this function invokes the same code as other NOP functions such as
  2808.       AH=18h and AH=61h
  2809. --------D-216E-------------------------------
  2810. INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
  2811.     AH = 6Eh
  2812.     Disk Transfer Area contains result of previous FindFirst ROM
  2813.       (see AH=6Dh)
  2814. Return: CF clear if found
  2815.         Disk Transfer Area filled with updated ROM search structure
  2816.           (see #01771)
  2817.     CF set if not found
  2818.         AX = 0012h (no more matches)
  2819.     ---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
  2820.     AL = 00h
  2821. SeeAlso: AH=4Fh,AH=6Dh
  2822. --------O-216E-------------------------------
  2823. INT 21 U - OS/2 v1.x FAPI - "DosEnumAttrib"
  2824.     AH = 6Eh
  2825.     DS:SI -> parameter packet (see #01772)
  2826. Return: CF clear if successful
  2827.         AX = 0000h
  2828.         DS:SI buffer updated
  2829.     CF set on error
  2830.         AX = error code
  2831. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2832. SeeAlso: AX=5703h,AH=6Fh"OS/2",INT 2F/AX=112Dh
  2833.  
  2834. Format of OS/2 DosEnumAttrib parameter packet:
  2835. Offset    Size    Description    (Table 01772)
  2836.  00h    DWORD    reserved (0)
  2837.  04h    DWORD    info level (always 00000001h)
  2838.  08h    DWORD    (call) number of entries requested
  2839.         (ret) actual number of entries returned
  2840.  0Ch    DWORD    length of buffer
  2841.  10h    DWORD    pointer to buffer for results
  2842.  14h    DWORD    number of first entry to return
  2843.  18h    DWORD    -> file handle or ASCIZ pathname
  2844.  1Ch    WORD    flag: 00h = previous field is file handle, 01h = pathname
  2845. --------D-216F00-----------------------------
  2846. INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
  2847.     AX = 6F00h
  2848. Return: CF clear
  2849.     AL = 00h
  2850.         BX = current ROM scan starting segment if function supported
  2851. SeeAlso: AH=6Dh,AX=6F01h,AX=6F02h
  2852. --------O-216F00-----------------------------
  2853. INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
  2854.     AX = 6F00h
  2855.     DS:SI -> DWORD buffer for maximum size of an extended attribute
  2856. Return: CF clear if successful
  2857.         AX = 0000h
  2858.         buffer filled
  2859.     CF set on error
  2860.         AX = error code
  2861. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2862. SeeAlso: AX=5703h,AX=6C01h,AH=6Eh"OS/2"
  2863. --------D-216F01-----------------------------
  2864. INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
  2865.     AX = 6F01h
  2866.     BX = new ROM scan starting address
  2867. Return: CF clear
  2868.     AL = 00h
  2869. SeeAlso: AX=6F00h,AX=6F03h
  2870. --------D-216F02-----------------------------
  2871. INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
  2872.     AX = 6F02h
  2873.     ES:BX -> buffer for exclusion region list (see #01773)
  2874. Return: CF clear
  2875.     AL = 00h
  2876.     ES:BX = 0000h:0000h on error, unchanged if buffer filled
  2877. Note:    for DOS versions which do not support this function, the return value
  2878.       is AL=00h, CF unchanged, ES:BX unchanged, and the ES:BX buffer
  2879.       unchanged
  2880. SeeAlso: AX=6F00h,AX=6F03h
  2881.  
  2882. Format of ROM exclusion region list:
  2883. Offset    Size    Description    (Table 01773)
  2884.  00h    WORD    number of entries
  2885.  02h 2N WORDs    start/end segments of N excluded regions
  2886. --------D-216F03-----------------------------
  2887. INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
  2888.     AX = 6F03h
  2889.     DS:DX -> new exclusion region list (see #01773)
  2890. Return: CF clear
  2891.     AL = 00h
  2892. Notes:    DOS saves only the pointer and assumes that the contents of the list
  2893.       are never changed, and that regions do not overlap
  2894.     if AL > 03h on entry, DOS returns CF set/AL=01h
  2895. SeeAlso: AX=6F01h,AX=6F02h
  2896. --------D-2170-------------------------------
  2897. INT 21 - MS-DOS 7 (Windows95) - GET/SET INTERNATIONALIZATION INFORMATION
  2898.     AH = 70h
  2899.     AL = subfunction
  2900.         00h get ??? info
  2901.         CX = buffer size (3Ah bytes needed)
  2902.         ES:DI -> buffer
  2903.         01h set above info
  2904.         CX = number of bytes to set
  2905.         DS:SI -> buffer containing ??? info (see #01774)
  2906.         02h set general internationalization info (see also AX=6500h)
  2907.         DS:SI -> buffer containing info (see #01775)
  2908.         CX = buffer size in bytes (up to 26h bytes used)
  2909.         first three bytes are skipped, the rest is copied to somewhere
  2910.           in the DOS data segment
  2911. Return: CF clear if successful
  2912.         ES:DI buffer filled (func 00h) (see #01774)
  2913.         CX = number of bytes actually set or returned
  2914.           (max 003Ah for functions 00h and 01h under v7.00, 0026h for
  2915.           function 02h)
  2916.     CF set on error
  2917.         AX = error code
  2918.         7000h if function not supported
  2919. SeeAlso: AH=38h,AH=65h
  2920.  
  2921. Format of MS-DOS v7.0 ??? table:
  2922. Offset    Size    Description    (Table 01774)
  2923.  00h 58 BYTEs    ??? country-specific information
  2924.         returned was (among others) "ENU USA GR"..."AM PM M/d/yy"...
  2925.          "dddd,MMMMdd,yyyy" in the German Preview version, and "US"
  2926.          instead of "GR" in the US build 450 version (with German
  2927.          country setting) and the US build 950a version with US
  2928.          country settings
  2929. SeeAlso: #01775
  2930.  
  2931. Format of MS-DOS v7.0 internationalization table:
  2932. Offset    Size    Description    (Table 01775)
  2933.  00h  3 BYTEs    unused (and ignored by DOS)
  2934.  03h    WORD    country ID (see #01400 at AH=38h)
  2935.  05h    WORD    code page (see #01757)
  2936.  07h    WORD    date format
  2937.  09h  5 BYTEs    ASCIZ current symbol string
  2938.  07h  2 BYTEs    ASCIZ thousands separator
  2939.  09h  2 BYTEs    ASCIZ decimal separator
  2940.  0Bh  2 BYTEs    ASCIZ date separator
  2941.  0Dh  2 BYTEs    ASCIZ time separator
  2942.  0Fh    BYTE    currency format
  2943.         bit 2 = set if currency symbol replaces decimal point
  2944.         bit 1 = number of spaces between value and currency symbol
  2945.         bit 0 = 0 if currency symbol precedes value
  2946.             1 if currency symbol follows value
  2947.  10h    BYTE    number of digits after decimal in currency
  2948.  11h    BYTE    time format
  2949.         bit 0 = 0 if 12-hour clock
  2950.             1 if 24-hour clock
  2951.  12h    DWORD    address of case map routine
  2952.         (FAR CALL, AL = character to map to upper case [>= 80h])
  2953.  16h  2 BYTEs    ASCIZ data-list separator
  2954.  18h 10 BYTEs    reserved
  2955. Note:    this table has the identical format to the extended country information
  2956.       retrieved via AH=65h with info ID = 01h
  2957. SeeAlso: #01399,#01750
  2958. ----------217070BX6060-----------------------
  2959. INT 21 - PCW Weather Card interface - GET DATA SEGMENT
  2960.     AX = 7070h
  2961.     BX = 6060h
  2962.     CX = 7070h
  2963.     DX = 7070h
  2964.     SI = 7070h
  2965.     DI = 7070h
  2966. Return: AX = segment of data structure (see #01776)
  2967. Notes:    the data structure is at offset 516 from this segment
  2968.     the update byte is at offset 514 from this segment.  Updates are
  2969.       once per second while this byte is nonzero and it is decremented
  2970.       once per second.  While this byte is 0 updates are once per minute.
  2971. SeeAlso: AX=7070h/BX=7070h
  2972.  
  2973. Format of PCW Weather Card data structure:
  2974. Offset    Type    Description    (Table 01776)
  2975.  00h    WORD    hour
  2976.  02h    WORD    minute
  2977.  04h    WORD    second
  2978.  06h    WORD    day
  2979.  08h    WORD    month
  2980.  0Ah    WORD    year
  2981.  0Ch    WORD    ???
  2982.  0Eh    WORD    relative barometric pressure (in 1/100 inches)
  2983.  10h    WORD    ???
  2984.  12h    WORD    ???
  2985.  14h    WORD    temperature 1 (in 1/10 degrees F)
  2986.  16h    WORD    temperature 1 lowest (in 1/10 degrees F)
  2987.  18h    WORD    temperature 1 highest (in 1/10 degrees F)
  2988.  1Ah    WORD    temperature 2 (in 1/10 degrees F)
  2989.  1Ch    WORD    temperature 2 lowest (in 1/10 degrees F)
  2990.  1Eh    WORD    temperature 2 highest (in 1/10 degrees F)
  2991.  20h    WORD    wind speed (in MPH)
  2992.  22h    WORD    average of 60 wind speed samples (in MPH)
  2993.  24h    WORD    highest wind speed (in MPH)
  2994.  26h    WORD    wind chill factor  (in 1/10 degrees F)
  2995.  28h    WORD    lowest wind chill factor (in 1/10 degrees F)
  2996.  2Ah    WORD    ???
  2997.  2Ch    WORD    wind direction (in degrees)
  2998.  2Eh    WORD    accumulated daily rainfall (in 1/10 inches)
  2999.  30h    WORD    accumulated annual rainfall (in 1/10 inches)
  3000. ----------217070BX7070-----------------------
  3001. INT 21 - PCW Weather Card interface - INSTALLATION CHECK
  3002.     AX = 7070h
  3003.     BX = 7070h
  3004.     CX = 7070h
  3005.     DX = 7070h
  3006.     SI = 7070h
  3007.     DI = 7070h
  3008. Return: AX = 0070h
  3009.     BX = 0070h
  3010.     CX = 0070h
  3011.     DX = 0070h
  3012.     SI = 0070h
  3013.     DI = 0070h
  3014. SeeAlso: AX=7070h/BX=6060h,AX=8080h
  3015. --------D-2171-------------------------------
  3016. INT 21 - Windows95 - LONG FILENAME FUNCTIONS
  3017.     AH = 71h
  3018.     AL = function
  3019.         0Dh reset drive (see AX=710Dh)
  3020.         39h create directory (see AX=7139h)
  3021.         3Ah remove directory (see AX=713Ah)
  3022.         3Bh set current directory (see AX=713Bh)
  3023.         41h delete file (see AX=7141h)
  3024.         43h get/set file attributes (see AX=7143h)
  3025.         47h get current directory (see AX=7147h)
  3026.         4Eh find first file (see AX=714Eh)
  3027.         4Fh find next file (see AX=714Fh)
  3028.         56h move (rename) file (see AX=7156h)
  3029.         60h truename (see AX=7160h/CL=00h,AX=7160h/CL=02h)
  3030.         6Ch create/open file (see AX=716Ch)
  3031.         A0h get volume information (see AX=71A0h)
  3032.         A1h terminate FindFirst/FindNext (see AX=71A1h)
  3033.         A6h get file information (see AX=71A6h)
  3034.         A7h time conversion (see AX=71A7h/BL=00h,AX=71A7h/BL=01h)
  3035.         A8h generate short filename (see AX=71A8h)
  3036.         A9h server create/open file (see AX=71A9h)
  3037.         AAh create/terminate SUBST (see AX=71AAh/BH=00h,AX=71AAh/BH=02h)
  3038. Return: CF set on error
  3039.         AX = error code (see #01680)
  3040.         7100h if function not supported
  3041.     CF clear if successful
  3042.         other registers as for corresponding "old" DOS function
  3043. Notes:    if error 7100h is returned, the old-style function should be called
  3044.     AX=714Eh returns a "search handle" which must be passed to AX=714Fh;
  3045.       when the search is complete, AX=71A1h must be called to terminate
  3046.       the search
  3047.     for compatibility with DOS versions prior to v7.00, the carry flag
  3048.       should be set on call to ensure that it is set on exit
  3049. SeeAlso: AH=39h,AH=3Ah,AH=3Bh,AH=41h,AX=4300h,AX=4301h,AX=4304h,AX=4306h
  3050. SeeAlso: AX=4307h,AH=47h,AH=4Eh,AH=4Fh,AH=56h,AH=6Ch,AX=714Eh,AX=714Fh
  3051. --------v-2171-------------------------------
  3052. INT 21 - VIRUS - "1205" - INSTALLATION CHECK
  3053.     AH = 71h
  3054. Return: AH = 17h if "1205" is resident
  3055. SeeAlso: AX=6969h"VIRUS",AH=76h"VIRUS"
  3056. --------D-21710D-----------------------------
  3057. INT 21 - Windows95 - RESET DRIVE
  3058.     AX = 710Dh
  3059.     CX = action (see #01777)
  3060.     DX = drive number
  3061. Return: CF clear
  3062. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  3063.       should be set on call to ensure that it is set on exit
  3064. SeeAlso: AH=0Dh
  3065.  
  3066. (Table 01777)
  3067. Values for drive reset action:
  3068.  0000h    flush filesystem buffers for drive, and reset drive
  3069.  0001h    flush filesystem buffers and cache for drive, and reset drive
  3070.  0002h    remount DriveSpace volume
  3071. --------D-217139-----------------------------
  3072. INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
  3073.     AX = 7139h
  3074.     DS:DX -> ASCIZ long directory name (including path)
  3075. Return: CF clear if successful
  3076.     CF set on error
  3077.         AX = error code (see #01680)
  3078.         7100h if function not supported
  3079. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  3080.       should be set on call to ensure that it is set on exit
  3081. SeeAlso: AH=39h,AX=713Ah,AX=713Bh,AX=43FFh/BP=5053h
  3082. --------D-21713A-----------------------------
  3083. INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
  3084.     AX = 713Ah
  3085.     DS:DX -> ASCIZ long name of directory to remove
  3086. Return: CF clear if successful
  3087.     CF set on error
  3088.         AX = error code (see #01680)
  3089.         7100h if function not supported
  3090. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  3091.       should be set on call to ensure that it is set on exit
  3092. SeeAlso: AH=3Ah,AX=7139h
  3093. --------D-21713B-----------------------------
  3094. INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
  3095.     AX = 713Bh
  3096.     DS:DX -> ASCIZ long name of directory to make current
  3097. Return: CF clear if successful
  3098.     CF set on error
  3099.         AX = error code (see #01680)
  3100.         7100h if function not supported
  3101. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  3102.       should be set on call to ensure that it is set on exit
  3103. SeeAlso: AH=0Eh,AH=3Bh,AX=7139h
  3104. --------D-217141-----------------------------
  3105. INT 21 - Windows95 - LONG FILENAME - DELETE FILE
  3106.     AX = 7141h
  3107.     DS:DX -> ASCIZ long name of file to delete
  3108.     SI = wildcard and attributes flag
  3109.         0000h wildcards are not allowed, and search attributes are
  3110.             ignored
  3111.         0001h wildcards are allowed, and only files with matching
  3112.             names and attributes are deleted
  3113.     CL = search attributes
  3114.     CH = must-match attributes
  3115. Return: CF clear if successful
  3116.     CF set on error
  3117.         AX = error code (see #01680)
  3118.         7100h if function not supported
  3119. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  3120.       should be set on call to ensure that it is set on exit
  3121. SeeAlso: AH=41h
  3122. --------D-217143-----------------------------
  3123. INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
  3124.     AX = 7143h
  3125.     DS:DX -> ASCIZ filename
  3126.     BL = action
  3127.         00h retrieve attributes
  3128.         Return:    CX = file attributes (see #01420)
  3129.         01h set attributes
  3130.         CX = attributes
  3131.         02h get physical size of compressed file
  3132.         Return: DX:AX = actual disk usage of file, in bytes
  3133.         03h set last write date/time
  3134.         DI = new last-write date (see #01666)
  3135.         CX = new last-write time (see #01665)
  3136.         04h get last write date/time
  3137.         Return:    CX = last write time (see #01665)
  3138.             DI = last write date (see #01666)
  3139.         05h set last access date
  3140.         DI = new last-access date (see #01666)
  3141.         06h get last access date
  3142.         Return:    DI = last access date (see #01666)
  3143.         07h set creation date/time
  3144.         DI = new creation date (see #01666)
  3145.         CX = new creation time (see #01665)
  3146.         SI = hundredths (10-millisecond units past time in CX, 0-199)
  3147.         08h get creation date/time
  3148.         Return:    CX = creation time (see #01665)
  3149.             DI = creation date (see #01666)
  3150.             SI = hundredths (10-millisecond units past time in CX)
  3151. Return: CF clear if successful
  3152.     CF set on error
  3153.         AX = error code (see #01680)
  3154.         7100h if function not supported
  3155. Note:    for compatibility with DOS versions prior to v7.00, the carry flag
  3156.       should be set on call to ensure that it is set on exit
  3157. SeeAlso: AX=4300h,AX=4301h
  3158. --------D-217147-----------------------------
  3159. INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
  3160.     AX = 7147h
  3161.     DL = drive number (00h = current, 01h = A:, etc.)
  3162.     DS:SI -> buffer for ASCIZ directory name
  3163. Return: CF clear if successful
  3164.     CF set on error
  3165.         AX = error code (see #01680)
  3166.         7100h if function not supported
  3167. Notes:    the returned pathname does not include the drive letter, colon, or
  3168.       leading backslash, and is not necessarily a long filename -- this
  3169.       function returns whatever path was used when changing to the
  3170.       current directory, and may include a mixture of long and short
  3171.       components
  3172.     the provided buffer must be at least as large as the value indicated
  3173.       by AX=71A0h
  3174.     for compatibility with DOS versions prior to v7.00, the carry flag
  3175.       should be set on call to ensure that it is set on exit
  3176. SeeAlso: AH=47h,AX=713Bh,AX=7160h,AX=71A0h
  3177. --------D-21714E-----------------------------
  3178. INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
  3179.     AX = 714Eh
  3180.     CL = allowable-attributes mask (see #01420 at AX=4301h)
  3181.           (bits 0 and 5 ignored)
  3182.     CH = required-attributes mask (see #01420)
  3183.     SI = date/time format (see #01778)
  3184.     DS:DX -> ASCIZ filespec (both "*" and "*.*" match any filename)
  3185.     ES:DI -> FindData record (see #01779)
  3186. Return: CF clear if successful
  3187.         AX = filefind handle (needed to continue search)
  3188.         CX = Unicode conversion flags (see #01780)
  3189.     CF set on error
  3190.         AX = error code
  3191.         7100h if function not supported
  3192. Notes:    this function is only available when IFSMgr is running, not under bare
  3193.       MS-DOS 7
  3194.     the application should close the filefind handle with AX=71A1h as soon
  3195.       as it has completed its search
  3196.     for compatibility with DOS versions prior to v7.00, the carry flag
  3197.       should be set on call to ensure that it is set on exit
  3198. SeeAlso: AH=4Eh,AX=714Fh,AX=71A1h
  3199.  
  3200. (Table 01778)
  3201. Values for Windows95 date/time format:
  3202.  0000h    use 64-bit file time format
  3203.  0001h    use MS-DOS date/time values (see #01665,#01666) in low double-word of
  3204.       file time QWORD (date is high word, time is low word of double-word)
  3205. SeeAlso: #01779
  3206.  
  3207. Format of Windows95 long filename FindData record:
  3208. Offset    Size    Description    (Table 01779)
  3209.  00h    DWORD    file attributes
  3210.         bits 0-6 standard DOS attributes (see #01420 at INT 21/AX=4301h)
  3211.         bit 8: temporary file
  3212.  04h    QWORD    file creation time (number of 100ns intervals since 1/1/1601)
  3213.  0Ch    QWORD    last access time
  3214.  14h    QWORD    last modification time
  3215.  1Ch    DWORD    file size (high 32 bits)
  3216.  20h    DWORD    file size (low 32 bits)
  3217.  24h  8 BYTEs    reserved (apparently unused)
  3218.  2Ch 260 BYTEs    ASCIZ full filename
  3219. 130h 14 BYTEs    ASCIZ short filename (for backward compatibility)
  3220. Note:    under Windows95B, the ASCIZ short filename will be the empty string
  3221.       if the directory does not contain a long filename entry for the
  3222.       file; in that case, the application should use the full filename
  3223. SeeAlso: #01780
  3224.  
  3225. Bitfields for Windows95 Unicode conversion flags:
  3226. Bit(s)    Description    (Table 01780)
  3227.  0    the returned full filename contains underscores for un-convertable
  3228.       Unicode characters
  3229.  1    the returned short filename contains underscores for un-convertable
  3230.       Unicode characters
  3231. SeeAlso: #01779
  3232. --------D-21714F-----------------------------
  3233. INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
  3234.     AX = 714Fh
  3235.     BX = filefind handle (from AX=714Eh)
  3236.     SI = date/time format (see #01778)
  3237.     ES:DI -> buffer for FindData record (see #01779)
  3238. Return: CF clear if successful
  3239.         AH = 4Fh (undocumented)
  3240.         AL destroyed (becomes low byte of filefind handle in Win95B)
  3241.         CX = Unicode conversion flags (see #01780)
  3242.     CF set on error
  3243.         AX = error code
  3244.         7100h if function not supported
  3245. Notes:    this function is only available when IFSMgr is running, not under bare
  3246.       MS-DOS 7
  3247.     for compatibility with DOS versions prior to v7.00, the carry flag
  3248.       should be set on call to ensure that it is set on exit
  3249. SeeAlso: AH=4Eh,AX=714Eh,AX=71A1h,AX=71A2h
  3250. --------D-217156-----------------------------
  3251. INT 21 - Windows95 - LONG FILENAME - RENAME FILE
  3252.     AX = 7156h
  3253.     DS:DX -> ASCIZ old file or directory name (long names allowed)
  3254.     ES:DI -> ASCIZ new name (long names allowed)
  3255. Return: CF clear if successful
  3256.     CF set on error
  3257.         AX = error code
  3258.         7100h if function not supported
  3259. Note:    the file may be renamed into a different directory, but not across
  3260.       disks
  3261. SeeAlso: AH=56h,AX=7141h,AX=43FFh/BP=5053h
  3262. --------D-217160CL00-------------------------
  3263. INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
  3264.     AX = 7160h
  3265.     CL = 00h
  3266.     CH = SUBST expansion flag
  3267.         00h return a path containing true path for a SUBSTed drive letter
  3268.         80h return a path containing the SUBSTed drive letter
  3269.     DS:SI -> ASCIZ filename or path (either long name or short name)
  3270.     ES:DI -> 261-byte buffer for canonicalized name
  3271. Return: CF set on error
  3272.         AX = error code
  3273.         02h invalid component in directory path or drive letter only
  3274.         03h malformed path or invalid drive letter
  3275.         ES:DI buffer unchanged
  3276.     CF clear if successful
  3277.         ES:DI buffer filled with fully qualified name
  3278.         AX destroyed
  3279. Desc:    determine the canonical name of the specified filename or path,
  3280.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  3281. Notes:    if a complete path is given, the result will be a short-form complete
  3282.       path; otherwise, the given relative path is appended to the
  3283.       short-form current directory name, '.'/'..'/'...'/etc. are resolved,
  3284.       and the final result uppercased without converting any remaining
  3285.       long-form names to short-form
  3286.     for compatibility with DOS versions prior to v7.00, the carry flag
  3287.       should be set on call to ensure that it is set on exit
  3288. BUG:    Windows95 incorrectly treats filenames where the first two characters
  3289.       after the drive letter and colon are both slashes (either forward
  3290.       or backward) as a UNC (network name) and requires several seconds
  3291.       to attempt to resolve the name before returning an unchanged
  3292.       string
  3293. SeeAlso: AH=60h,AX=7160h/CL=01h
  3294. --------D-217160CL01-------------------------
  3295. INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
  3296.     AX = 7160h
  3297.     CL = 01h
  3298.     CH = SUBST expansion flag
  3299.         00h return a path containing true path for a SUBSTed drive letter
  3300.         80h return a path containing the SUBSTed drive letter
  3301.     DS:SI -> ASCIZ long filename or path
  3302.     ES:DI -> 67-byte (possibly 128-byte) buffer for short filename
  3303. Return: CF set on error
  3304.         AX = error code
  3305.         02h invalid component in directory path or drive letter only
  3306.         03h malformed path or invalid drive letter
  3307.         ES:DI buffer unchanged
  3308.     CF clear if successful
  3309.         ES:DI buffer filled with equivalent short filename (full path,
  3310.           even if relative path given, and all uppercase)
  3311. Note:    this call returns the short name for any long-filename portions of
  3312.       the provided pathname or filename
  3313. SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=02h
  3314. --------D-217160CL02-------------------------
  3315. INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
  3316.     AX = 7160h
  3317.     CL = 02h
  3318.     CH = SUBST expansion flag
  3319.         00h return a path containing true path for a SUBSTed drive letter
  3320.         80h return a path containing the SUBSTed drive letter
  3321.     DS:SI -> ASCIZ short filename or path
  3322.     ES:DI -> 261-byte buffer for canonicalized long name
  3323. Return: CF set on error
  3324.         AX = error code
  3325.         02h invalid component in directory path or drive letter only
  3326.         03h malformed path or invalid drive letter
  3327.         ES:DI buffer unchanged
  3328.     CF clear if successful
  3329.         ES:DI buffer filled with qualified long name (can contain
  3330.           lowercase letters)
  3331. Desc:    determine the canonical name of the specified filename or path,
  3332.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  3333. BUGS:    even though the maximum length of a complete long pathname is 260
  3334.       characters, Windows95 returns CF set/AX=0003h even if the file
  3335.       exists whenever the full pathname is more than 255 characters
  3336.     Windows95 incorrectly treats filenames where the first two characters
  3337.       after the drive letter and colon are both slashes (either forward
  3338.       or backward) as a UNC (network name) and requires several seconds
  3339.       to attempt to resolve the name before returning an unchanged
  3340.       string
  3341. SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=01h
  3342. --------D-21716C-----------------------------
  3343. INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
  3344.     AX = 716Ch
  3345.     BX = access mode and sharing flags (see #01782,also AX=6C00h)
  3346.     CX = attributes
  3347.     DX = action (see #01781)
  3348.     DS:SI -> ASCIZ filename
  3349.     DI = alias hint (number to append to short filename for disambiguation)
  3350. Return: CF clear if successful
  3351.         AX = file handle
  3352.         CX = action taken
  3353.         0001h file opened
  3354.         0002h file created
  3355.         0003h file replaced
  3356.     CF set on error
  3357.         AX = error code (see #01680)
  3358.         7100h if function not supported
  3359. SeeAlso: AX=6C00h,AX=7141h,AX=7156h,AX=71A9h
  3360.  
  3361. Bitfields for Windows95 long-name open action:
  3362. Bit(s)    Description    (Table 01781)
  3363.  0    open file (fail if file does not exist)
  3364.  1    truncate file if it already exists (fail if file does not exist)
  3365.  4    create new file if file does not already exist (fail if exists)
  3366. Note:    the only valid combinations of multiple flags are bits 4&0 and 4&1
  3367.  
  3368. Bitfields for Windows95 file access/sharing modes:
  3369. Bit(s)    Description    (Table 01782)
  3370.  2-0    file access mode
  3371.     000 read-only
  3372.     001 write-only
  3373.     010 read-write
  3374.     100 read-only, do not modify file's last-access time
  3375.  6-4    file sharing modes
  3376.  7    no-inherit flag
  3377.  8    do not buffer data (requires that all reads/writes be exact physical
  3378.       sectors)
  3379.  9    do not compress file even if volume normally compresses files
  3380.  10    use alias hint in DI as numeric tail for short-name alias
  3381.  12-11    unused??? (0)
  3382.  13    return error code instead of generating INT 24h if critical error
  3383.       while opening file
  3384.  14    commit file after every write operation
  3385. SeeAlso: #01402
  3386. --------D-2171A0-----------------------------
  3387. INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
  3388.     AX = 71A0h
  3389.     DS:DX -> ASCIZ root name (e.g. "C:\")
  3390.     ES:DI -> buffer for file system name
  3391.     CX = size of ES:DI buffer
  3392. Return: CF clear if successful
  3393.         AX destroyed (0000h and 0200h seen)
  3394.         BX = file system flags (see #01783)
  3395.         CX = maximum length of file name [usually 255]
  3396.         DX = maximum length of path [usually 260]
  3397.         ES:DI buffer filled (ASCIZ, e.g. "FAT","NTFS","CDFS")
  3398.     CF set on error
  3399.         AX = error code
  3400.         7100h if function not supported
  3401. Notes:    for the file system name buffer, 32 bytes should be sufficient; that's
  3402.      what is used in some sample code by Walter Oney from Microsoft.
  3403.     this function accesses the disk the first time it is called
  3404. BUG:    this function returns DX=0000h for CD-ROM drives under Win95 SP1
  3405. SeeAlso: AX=714Eh,AX=7160h/CL=00h
  3406.  
  3407. Bitfields for long filename volume information flags:
  3408. Bit(s)    Description    (Table 01783)
  3409.  0    searches are case sensitive
  3410.  1    preserves case in directory entries
  3411.  2    uses Unicode characters in file and directory names
  3412.  3-13    reserved (0)
  3413.  14    supports DOS long filename functions
  3414.  15    volume is compressed
  3415. --------D-2171A1-----------------------------
  3416. INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
  3417.     AX = 71A1h
  3418.     BX = filefind handle (from AX=714Eh)
  3419. Return: CF clear if successful
  3420.     CF set on error
  3421.        AX = error code
  3422.         7100h if function not supported
  3423. Notes:    this function must be called after starting a search with AX=714Eh,
  3424.       to indicate that the search handle returned by that function will
  3425.       no longer be used
  3426.     this function is only available when IFSMgr is running, not under bare
  3427.       MS-DOS 7
  3428. SeeAlso: AH=4Eh,AX=714Eh,AX=714Fh
  3429. --------D-2171A2-----------------------------
  3430. INT 21 U - Windows95 - internal - LONG FILENAME - FIND NEXT MATCHING FILE
  3431.     AX = 71A2h
  3432.     BX = filefind handle (from AX=714Eh)
  3433.     SI = date/time format (see #01778)
  3434.     ES:DI -> buffer for FindData record (see #01779)
  3435. Return: CF clear if successful
  3436.         AX = 71A2h
  3437.         CX = Unicode conversion flags (see #01780)
  3438.     CF set on error
  3439.         AX = error code
  3440.         7100h if function not supported
  3441. Notes:    this function is only available when IFSMgr is running, not under bare
  3442.       MS-DOS 7; it is functionally identical to AX=714Fh
  3443.     documented as "for internal use by Windows 95 only"
  3444. --------D-2171A3-----------------------------
  3445. INT 21 U - Windows95 - internal
  3446.     AX = 71A3h
  3447.     ???
  3448. Return: ???
  3449. Note:    documented as "for internal use by Windows 95 only"
  3450. --------D-2171A4-----------------------------
  3451. INT 21 U - Windows95 - internal
  3452.     AX = 71A4h
  3453.     ???
  3454. Return: ???
  3455. Note:    documented as "for internal use by Windows 95 only"
  3456. --------D-2171A5-----------------------------
  3457. INT 21 U - Windows95 - internal
  3458.     AX = 71A5h
  3459.     ???
  3460. Return: ???
  3461. Note:    documented as "for internal use by Windows 95 only"
  3462. --------D-2171A6-----------------------------
  3463. INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
  3464.     AX = 71A6h
  3465.     BX = file handle
  3466.     DS:DX -> buffer for file information (see #01784)
  3467.     CF set
  3468. Return: CF clear if successful
  3469.         file information record filled
  3470.     CF set on error
  3471.         AX = error code
  3472.         7100h if function not supported
  3473. SeeAlso: AX=71A7h/BL=00h
  3474.  
  3475. Format of Windows95 file information:
  3476. Offset    Size    Description    (Table 01784)
  3477.  00h    DWORD    file attributes
  3478.  04h    QWORD    creation time (0 = unsupported)
  3479.  0Ch    QWORD    last access time (0 = unsupported)
  3480.  14h    QWORD    last write time
  3481.  1Ch    DWORD    volume serial number
  3482.  20h    DWORD    high 32 bits of file size
  3483.  24h    DWORD    low 32 bits of file size
  3484.  28h    DWORD    number of links to file
  3485.  2Ch    DWORD    unique file identifier (high 32 bits)
  3486.  30h    DWORD    unique file identifier (low 32 bits)
  3487. Note:    the file identifer and volume serial number together uniquely identify
  3488.       a file while it is open; the identifier may change when the system
  3489.       is restarted or the file is first opened
  3490. --------D-2171A7BL00-------------------------
  3491. INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
  3492.     AX = 71A7h
  3493.     BL = 00h
  3494.     DS:SI -> QWORD file time
  3495. Return: CF clear if successful
  3496.         CX = DOS time (see #01665)
  3497.         DX = DOS date (see #01666)
  3498.         BH = hundredths (10-millisecond units past time in CX)
  3499.     CF set on error
  3500.         AX = error code
  3501.         7100h if function not supported
  3502. Desc:    convert Win95 64-bit file time (UTC) into DOS-style date and time
  3503.       (local timezone)
  3504. Note:    the conversion fails if the file time's value is outside the range
  3505.       01jan1980 and 31dec2107
  3506. SeeAlso: AX=71A6h,AX=71A7h/BL=01h
  3507. --------D-2171A7BL01-------------------------
  3508. INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
  3509.     AX = 71A7h
  3510.     BL = 01h
  3511.     CX = DOS time (see #01665)
  3512.     DX = DOS date (see #01666)
  3513.     BH = hundredths (10-millisecond units past time in CX)
  3514.     ES:DI -> buffer for QWORD file time
  3515. Return: CF clear if successful
  3516.         ES:DI buffer filled
  3517.     CF set on error
  3518.         AX = error code
  3519.         7100h if function not supported
  3520. Desc:    convert DOS-style date and time (local timezone) into Win95 64-bit
  3521.       file time (UTC)
  3522. SeeAlso: AX=71A6h,AX=71A7h/BL=00h
  3523. --------D-2171A8-----------------------------
  3524. INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
  3525.     AX = 71A8h
  3526.     DS:SI -> ASCIZ long filename (no path allowed!)
  3527.     ES:DI -> buffer for ASCIZ short filename
  3528.     DH = short name's format
  3529.         00h 11-char directory entry/FCB filename format
  3530.         01h DOS 8.3
  3531.     DL = character sets
  3532.         bits 7-4: short name's character set (see #01785)
  3533.         bits 3-0: long name's character set (see #01785)
  3534. Return: CF clear if successful
  3535.         ES:DI buffer filled
  3536.     CF set on error
  3537.         AX = error code
  3538.         7100h if function not supported
  3539. Note:    this function uses the same algorithm as the filesystem except that
  3540.       the returned name never has a numeric tail for disambiguation
  3541. SeeAlso: AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h
  3542.  
  3543. (Table 01785)
  3544. Values for Windows95 filename character set:
  3545.  00h    Windows ANSI
  3546.  01h    current OEM character set
  3547.  02h    Unicode
  3548. --------D-2171A9-----------------------------
  3549. INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
  3550.     AX = 71A9h
  3551.     BX = access mode and sharing flags (see #01782,also AX=6C00h)
  3552.     CX = attributes
  3553.     DX = action (see #01781)
  3554.     DS:SI -> ASCIZ filename
  3555.     DI = alias hint (number to append to short filename for disambiguation)
  3556. Return: CF clear if successful
  3557.         AX = global file handle
  3558.         CX = action taken
  3559.         0001h file opened
  3560.         0002h file created
  3561.         0003h file replaced
  3562.     CF set on error
  3563.         AX = error code (see #01680)
  3564.         7100h if function not supported
  3565. Note:    for use by real-mode servers only
  3566. SeeAlso: AX=6C00h,AX=716Ch
  3567. --------D-2171AABH00-------------------------
  3568. INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
  3569.     AX = 71AAh
  3570.     BH = 00h
  3571.     BL = drive number (00h = default, 01h = A:, etc.)
  3572.     DS:DX -> ASCIZ pathname to associate with drive letter
  3573. Return: CF clear if successful
  3574.     CF set on error
  3575.         AX = error code (see #01680)
  3576.         7100h if function not supported
  3577. SeeAlso: AX=71AAh/BH=01h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#01643
  3578. --------D-2171AABH01-------------------------
  3579. INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
  3580.     AX = 71AAh
  3581.     BH = 01h
  3582.     BL = drive number (01h = A:, etc.)
  3583. Return: CF clear if successful
  3584.     CF set on error
  3585.         AX = error code (see #01680)
  3586.         7100h if function not supported
  3587. Note:    the specified drive number may not be 00h (default), and presumably not
  3588.       the current drive either
  3589. SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#01643
  3590. --------D-2171AABH02-------------------------
  3591. INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
  3592.     AX = 71AAh
  3593.     BH = 02h
  3594.     BL = drive number (01h = A:, etc.)
  3595.     DS:DX -> buffer for ASCIZ pathname associated with drive letter
  3596. Return: CF clear if successful
  3597.         DS:DX buffer filled
  3598.     CF set on error
  3599.         AX = error code (see #01680)
  3600.         7100h if function not supported
  3601. Note:    the specified drive number may not be 00h (default drive)
  3602. SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#01643
  3603. --------D-2172-------------------------------
  3604. INT 21 - Windows95 beta - LFN-FindClose
  3605.     AH = 72h
  3606.     details not available
  3607. Return:    CF clear if successful
  3608.     CF set on error
  3609.         AX = error code (see #01680)
  3610.         7200h if function not supported (e.g. under bare MS-DOS 7)
  3611. Note:    this function was present in beta versions of Windows95, but is
  3612.       probably not present in the release version
  3613. SeeAlso: AX=71A1h
  3614. --------D-2173-------------------------------
  3615. INT 21 - MS-DOS 7 - DRIVE LOCKING ???
  3616.     AH = 73h
  3617.     DL = drive (0=current, 1=A:, etc.)
  3618.     CL = which flag to get or set
  3619.         00h drive flag???
  3620.         01h ???
  3621.     AL = subfunction
  3622.         00h get ???
  3623.         01h set ???
  3624.         CH = new values for ??? flags
  3625.             bit 1: ??? (CL=00h only)
  3626.             bit 3: ??? (CL=01h only)
  3627. Return: CF clear if successful
  3628.         for AL=00h:
  3629.         AL = value of CL on entry
  3630.         for CL=00h: AH = new flag and 06h (i.e. bits 1 and 2 used)
  3631.         for CL=01h: AH = new flag and 08h (i.e. bit 3 used)
  3632.         (flag being taken from a table of bytes)
  3633.     CF set on error
  3634.         AX = error code (01h,0Fh,etc.) (see #01680)
  3635.         7300h if function not supported
  3636. Note:    these two subfunctions are available even when only the MS-DOS kernel
  3637.       is running
  3638. --------D-217302-----------------------------
  3639. INT 21 - Windows95 - FAT32 - "Get_ExtDPB" - GET EXTENDED DPB
  3640.     AX = 7302h
  3641.     DL = drive number (00h=default, 01h=A:, etc.)
  3642.     ES:DI -> buffer for returned data (see #01786)
  3643.     CX = length of buffer (003Fh for Windows95)
  3644.     SI = signature (undocumented, must be F1A6h to get device driver
  3645.           address and next-DBP pointer) (see #01787)
  3646. Return: CF clear if successful
  3647.         ES:DI buffer filled
  3648.     CF set on error
  3649.         AX = error code
  3650.            0018h bad buffer length
  3651. SeeAlso: AX=7303h,AX=7304h,AH=1Fh,AH=32h
  3652.  
  3653. Format of Get_ExtDPB data buffer:
  3654. Offset    Size    Description    (Table 01786)
  3655.  00h    WORD    (call) length of following data (003Dh)
  3656.  02h 61 BYTEs    (ret) drive parameter block (DPB) (see #01787)
  3657.  
  3658. Format of Extended Drive Parameter Block:
  3659. Offset    Size    Description    (Table 01787)
  3660.  00h 24 BYTEs    standard DOS 4+ DPB
  3661.  18h    BYTE    "dpb_flags" (undocumented)
  3662.         FFh force media check
  3663.  19h    DWORD    pointer to next DPB (see note)
  3664.  1Dh    WORD    cluster at which to start search for free space when writing,
  3665.         usually the last cluster allocated
  3666.  1Fh    WORD    number of free clusters on drive, FFFFh = unknown
  3667.  21h    WORD    high word of free cluster count
  3668.  23h    WORD    active FAT/mirroring
  3669.         bit 7: do not mirror active FAT to inactive FATs
  3670.         bits 6-4: reserved (0)
  3671.         bits 3-0: the 0-based FAT number of the active FAT
  3672.             (only meaningful if mirroring disabled)        
  3673.  25h    WORD    sector number of file system information sector, or
  3674.           FFFFh for none (see also #01788)
  3675.  27h    WORD    sector number of backup boot sector, or FFFFh for none
  3676.  29h    DWORD    first sector number of the first cluster
  3677.  2Dh    DWORD    maximum cluster number
  3678.  31h    DWORD    number of sectors occupied by FAT
  3679.  35h    DWORD    cluster number of start of root directory
  3680.  39h    DWORD    cluster number at which to start searching for free space
  3681. Notes:    except for offset 18h, all of the first 33 bytes are identical to
  3682.       the standard DOS 4-6 DPB
  3683.     unless the proper value is given in SI on entry to "Get_ExtDBP", the
  3684.       next-DPB pointer and device driver address are set to 0000h:0000h
  3685. SeeAlso: #01786,#01395 at AH=32h,#01664
  3686.  
  3687. Format of File System Information structure:
  3688. Offset    Size    Description    (Table 01788)
  3689.  00h    DWORD    signature 61417272h
  3690.  04h    DWORD    number of free clusters (FFFFFFFFh if unknown)
  3691.  08h    DWORD    most recently allocated cluster
  3692.  0Ch 12 BYTEs    reserved
  3693. SeeAlso: #01787
  3694. --------D-217303-----------------------------
  3695. INT 21 - Windows95 - FAT32 - GET EXTENDED FREE SPACE ON DRIVE
  3696.     AX = 7303h
  3697.     DS:DX -> ASCIZ string for drive ("C:\" or "\\SERVER\Share")
  3698.     ES:DI -> buffer for extended free space structure (see #01789)
  3699.     CX = length of buffer for extended free space
  3700. Return: CF clear if successful
  3701.         ES:DI buffer filled
  3702.     CF set on error
  3703.         AX = error code
  3704. Notes:    this function reportedly returns a maximum of 2GB free space even on
  3705.       an FAT32 partition larger than 2GB under some versions of Win95,
  3706.       apparently by limiting the number of reported free clusters to no
  3707.       more than 64K
  3708.     on DOS versions which do not support the FAT32 calls, this function
  3709.       returns CF clear/AL=00h (which is the DOS v1+ method for reporting
  3710.       unimplemented functions)
  3711. SeeAlso: AX=7302h,AX=7304h,AX=7305h,AH=36h
  3712.  
  3713. Format of extended free space structure:
  3714. Offset    Size    Description    (Table 01789)
  3715.  00h    WORD    (ret) size of returned structure
  3716.  02h    WORD    (call) structure version (0000h)
  3717.         (ret) actual structure version (0000h)
  3718.  04h    DWORD    number of sectors per cluster (with adjustment for compression)
  3719.  08h    DWORD    number of bytes per sector
  3720.  0Ch    DWORD    number of available clusters
  3721.  10h    DWORD    total number of clusters on the drive
  3722.  14h    DWORD    number of physical sectors available on the drive, without
  3723.           adjustment for compression
  3724.  18h    DWORD    total number of physical sectors on the drive, without
  3725.           adjustment for compression
  3726.  1Ch    DWORD    number of available allocation units, without adjustment
  3727.           for compression
  3728.  20h    DWORD    total allocation units, without adjustment for compression
  3729.  24h  8 BYTEs    reserved
  3730. --------D-217304-----------------------------
  3731. INT 21 - Windows95 - FAT32 - Set DPB TO USE FOR FORMATTING
  3732.     AX = 7304h
  3733.     DL = drive number (00h=default, 01h=A:, etc.)
  3734.     ES:DI -> buffer for Set_DPBforFormat structure (see #01790)
  3735. Return: CF clear if successful
  3736.         ES:DI buffer updated
  3737.     CF set on error
  3738.         AX = error code
  3739. SeeAlso: AX=7302h,AX=7303h,AX=7305h
  3740.  
  3741. Format of Set_DPBforFormat structure:
  3742. Offset    Size    Description    (Table 01790)
  3743.  00h    WORD    (call) size
  3744.  02h    WORD    (call) structure version???  (0000h)
  3745.         (ret) ???
  3746.  04h    DWORD    (call) function number
  3747.         00h invalidate DPB counts
  3748.         01h rebuild DPB from BPB
  3749.         02h force media change (next access to drive rebuild DPB)
  3750.         03h get/set active FAT number and mirroring
  3751.         04h get/set root directory cluster number
  3752. ---function 00h---
  3753.  08h    DWORD    new DPB free count (00000000h=no change, FFFFFFFFh=unknown)
  3754.  0Ch    DWORD    new DPB next-free (00000000h=no change, FFFFFFFFh=unknown)
  3755.  10h    DWORD    unused
  3756.  14h    DWORD    unused
  3757. ---function 01h---
  3758.  08h    DWORD    unused???
  3759.  0Ch    DWORD    (call) -> BIOS Parameter Block from which to rebuild DPB
  3760.  10h    DWORD    unused
  3761.  14h    DWORD    unused
  3762. ---function 02h---
  3763.  08h    DWORD    unused
  3764.  0Ch    DWORD    unused
  3765.  10h    DWORD    unused
  3766.  14h    DWORD    unused
  3767. ---function 03h---
  3768.  08h    DWORD    (call) new active FAT/mirroring state, or FFFFFFFFh to get
  3769.         bits 3-0: the 0-based FAT number of the active FAT
  3770.         bits 6-4: reserved (0)
  3771.         bit 7: do not mirror active FAT to inactive FATs
  3772.  0Ch    DWORD    (ret) previous active FAT/mirroring state (as above)
  3773.  10h    DWORD    unused
  3774.  14h    DWORD    unused
  3775. ---function 04h---
  3776.  08h    DWORD    (call) new root directory cluster number
  3777.             FFFFFFFFh to get current
  3778.  0Ch    DWORD    (ret) previous root directory cluster number
  3779.  10h    DWORD    unused
  3780.  14h    DWORD    unused
  3781. --------D-217305CXFFFF-----------------------
  3782. INT 21 - Windows95 - FAT32 - EXTENDED ABSOLUTE DISK READ/WRITE
  3783.     AX = 7305h
  3784.     CX = FFFFh
  3785.     DL = drive number (01h=A:, etc.)
  3786.     SI = read/write mode flags (see #01791)
  3787.     DS:BX -> disk I/O packet (see #02548 at INT 25)
  3788. Return: CF clear if successful
  3789.     CF set on error
  3790.         AX = error code
  3791. Note:    one can not specify the default drive (DL=00h) for this function.
  3792. SeeAlso: AX=7302h,AX=7304h,INT 25,INT 26
  3793.  
  3794. Bitfields for Extended Absolute Disk Read/Write mode flags:
  3795. Bit(s)    Description    (Table 01791)
  3796.  0    direction (0=read, 1=write)
  3797.  12-1    reserved (0)
  3798.  14-13    write type (should be 00 on reads)
  3799.     00 unknown data
  3800.     01 FAT data
  3801.     10 directory data
  3802.     11 file data
  3803.  15    reserved (0)
  3804. --------v-217575-----------------------------
  3805. INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
  3806.     AX = 7575h
  3807. Return: AX = 4321h if resident
  3808. SeeAlso: AX=6969h,AH=76h"VIRUS"
  3809. --------v-2176-------------------------------
  3810. INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
  3811.     AH = 76h
  3812. Return: AL = 48h if resident
  3813. SeeAlso: AX=7575h,AX=7700h"VIRUS"
  3814. --------v-217700-----------------------------
  3815. INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
  3816.     AX = 7700h
  3817. Return: AX = 0920h if resident
  3818. SeeAlso: AH=76h,AX=7BCEh,AH=7Fh
  3819. --------V-217734-----------------------------
  3820. INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
  3821.     AX = 7734h
  3822. Return: DX = 3477h if installed
  3823.         AX = segment of resident code
  3824. Program: ScrollIt is a shareware backscroll utility by Bromfield Software
  3825.       Products
  3826. --------U-217761-----------------------------
  3827. INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
  3828.     AX = 7761h ('wa')
  3829. Return: AX = 6177h
  3830. Note:    WATCH.COM is part of the "TSR" package by TurboPower Software
  3831. SeeAlso: INT 16/AX=7761h
  3832. --------v-217BCE-----------------------------
  3833. INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
  3834.     AX = 7BCEh
  3835. Return: AX = 7BCEh if resident (???)
  3836. SeeAlso: AX=5454h"VIRUS",AX=7700h,AX=7BCFh,AH=7Fh"VIRUS"
  3837. --------v-217BCF-----------------------------
  3838. INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
  3839.     AX = 7BCFh
  3840. Return: AX = 7BCFh if resident
  3841. SeeAlso: AX=7BCEh"VIRUS",AH=7Dh"VIRUS"
  3842. --------v-217D-------------------------------
  3843. INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
  3844.     AH = 7Dh
  3845. Return: AH = FAh if installed
  3846. SeeAlso: AX=7BCFh"VIRUS",AH=7Fh"VIRUS"
  3847. --------v-217F-------------------------------
  3848. INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
  3849.     AH = 7Fh
  3850. Return: AH = 80h if resident
  3851. SeeAlso: AX=7BCEh,AH=83h"VIRUS"
  3852. --------D-2180-------------------------------
  3853. INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
  3854.     AH = 80h
  3855.     CX = mode
  3856.         0000h place child in zombie mode on exit to preserve exit code
  3857.         0001h discard child process and exit code on termination
  3858.     DS:DX -> ASCIZ full program name
  3859.     ES:BX -> parameter block (as for AX=4B00h)
  3860. Return: CF clear if successful
  3861.         AX = Command Subgroup ID (CSID)
  3862.     CF set on error
  3863.         AX = error code (see #01680 at AH=59h/BX=0000h)
  3864. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  3865.       by several other European OEMs; its release falls between mainstream
  3866.       versions 3.2 and 3.3
  3867. Desc:    asynchronously execute a program, creating a new process for it
  3868. Notes:    this function is called by the DETACH command
  3869.     there is a system-wide limit of 32 processes
  3870.     the CSID is used to identify all processes that have been spawned by
  3871.       a given process, whether directly or indirectly
  3872.     programs to be run in the background must use the new executable format
  3873.       (see #01596 at AH=4Bh)
  3874.     background processes may only perform asynchronous (background) EXECs,
  3875.       either this function or AX=4B04h
  3876.     background processes may execute INT 11, INT 12, INT 21, INT 2A, and
  3877.       INT 2F at any time; they may execute INT 10 and INT 16 only while
  3878.       they have opened a popup screen via INT 2F/AX=1401h; no other
  3879.       interrupts may be executed from the background
  3880.     background processes may not use drive B: or overlay their code
  3881.       segments
  3882.     see AX=8700h for an installation check
  3883.     the "NE" new executable format made its first appearance in European
  3884.       MS-DOS 4.0
  3885. SeeAlso: AH=4Bh,AH=87h,INT 2F/AX=1400h"POPUP"
  3886. ----------218080-----------------------------
  3887. INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
  3888.     AX = 8080h
  3889. Return: ???
  3890. SeeAlso: AX=7070h/BX=7070h
  3891. --------D-2181-------------------------------
  3892. INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
  3893.     AH = 81h
  3894.     BX = flag (00h freeze command subtree, 01h only specified process)
  3895.     CX = Process ID of head of command subtree
  3896. Return: CF clear if successful
  3897.     CF set on error
  3898.         AX = error code (no such process)
  3899. Desc:    temporarily suspend a process or a process and all of its children
  3900. Note:    if BX=0001h, this call will not return until the process is actually
  3901.       frozen, which may not be until after it unblocks from an I/O
  3902.       operation
  3903. SeeAlso: AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh
  3904. --------D-2182-------------------------------
  3905. INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
  3906.     AH = 82h
  3907.     BX = flag (00h resume command subtree, 01h only specified process)
  3908.     CX = Process ID of head of command subtree
  3909. Return: CF clear if successful
  3910.     CF set on error
  3911.         AX = error code (no such process)
  3912. Desc:    restart a previously-suspended process or a process and all of its
  3913.       children
  3914. SeeAlso: AH=81h,INT 15/AX=101Eh
  3915. --------D-2183-------------------------------
  3916. INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
  3917.     AH = 83h
  3918.     AL = function
  3919.         00h get size
  3920.         01h set new size
  3921.         BX = new size in paragraphs
  3922. Return: CF clear if successful
  3923.         BX = current size (function 00h) or old size (function 01h)
  3924.     CF set on error
  3925.         AX = error code (01h,07h,0Dh)(see #01680 at AH=59h/BX=0000h)
  3926. Desc:    specify or determine how much memory may be allocated by the foreground
  3927.       process
  3928. Note:    if the partition size is set to 0000h, no partition management is done
  3929.       and all memory allocation is compatible with DOS 3.2.
  3930.     the partition size can be changed regardless of what use is being made
  3931.       of the changed memory; subsequent allocations will follow the
  3932.       partition rules (foreground processes may allocate only foreground
  3933.       memory; background processes allocate background memory first, then
  3934.       foreground memory)
  3935. SeeAlso: AH=48h,AH=4Ah
  3936. --------v-2183-------------------------------
  3937. INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
  3938.     AH = 83h
  3939. Return: DX = 1990h if resident
  3940. SeeAlso: AH=76h,AH=84h"VIRUS"
  3941. --------v-2184-------------------------------
  3942. INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
  3943.     AH = 84h
  3944. Return: DX = 1990h if resident
  3945.         BH = version number (major in high nybble, minor in low)
  3946. SeeAlso: AH=83h"VIRUS",AH=89h"VIRUS"
  3947. --------D-218400-----------------------------
  3948. INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
  3949.     AX = 8400h
  3950.     BX = size in bytes (0000h = 65536)
  3951.     CX = flags
  3952.         bit 6: zero-initialize segment
  3953.     DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
  3954. Return: CF clear if successful
  3955.         AX = segment address of shared memory global object
  3956.     CF set on error
  3957.         AX = error code (06h,08h) (see #01680 at AH=59h/BX=0000h)
  3958. Desc:    create an area of memory which may be accessed by multiple processes
  3959. Notes:    shared memory objects are created as special files (thus the
  3960.       restriction on the name)
  3961.     on successful creation, the reference count is set to 1
  3962. SeeAlso: AX=8401h,AX=8402h,INT 15/AX=DE19h
  3963. --------D-218401-----------------------------
  3964. INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
  3965.     AX = 8401h
  3966.     CX = flags
  3967.         bit 7: writable segment (ignored by MS-DOS 4.0)
  3968.     DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
  3969. Return: CF clear if successful
  3970.         AX = segment address of shared memory global object
  3971.         CX = size in bytes
  3972.     CF set on error
  3973.         AX = error code (invalid name)
  3974. Desc:    get address of a previously-created area of memory which may be
  3975.       accessed by multiple processes
  3976. Note:    this call increments the reference count for the shared memory area
  3977. SeeAlso: AX=8400h,AX=8402h
  3978. --------D-218402-----------------------------
  3979. INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
  3980.     AX = 8402h
  3981.     BX = handle (segment address of shared memory object)
  3982. Return: CF clear if successful
  3983.     CF set on error
  3984.         AX = error code (no such name)
  3985. Desc:    indicate that the specified area of shared memory will no longer be
  3986.       used by the caller
  3987. Note:    the reference count is decremented and the shared memory area is
  3988.       deallocated if the new reference count is zero
  3989. SeeAlso: AX=8400h,AX=8401h,INT 15/AX=DE19h
  3990. --------D-2185-------------------------------
  3991. INT 21 U - European MS-DOS 4.0 - ???
  3992.     AH = 85h
  3993.     ???
  3994. Return: ???
  3995. --------D-2186-------------------------------
  3996. INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
  3997.     AH = 86h
  3998.     BX = total number of file handles in new table
  3999. Return: CF clear if successful
  4000.     CF set on error
  4001.         AX = error code (06h,08h) (see #01680 at AH=59h/BX=0000h)
  4002. Desc:    adjust the size of the per-process open file table, thus raising or
  4003.       lowering the limit on the number of files the caller can open
  4004.       simultaneously
  4005. Notes:    any currently-open files are copied to the new table
  4006.     if the table is increased beyond the default 20 handles, only the
  4007.       first 20 will be inherited by child processes
  4008.     error 06h is returned if the requested number of handles exceeds
  4009.       system limits or would require closing currently-open files
  4010. SeeAlso: AH=26h,AH=67h
  4011. --------D-2187-------------------------------
  4012. INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
  4013.     AH = 87h
  4014. Return: AX = PID
  4015.     BX = parent process's PID
  4016.     CX = Command Subgroup ID (CSID)
  4017. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  4018.       by several other European OEMs; its release falls between mainstream
  4019.       versions 3.2 and 3.3
  4020. Desc:    determine an identifier by which to access the calling process
  4021. Notes:    called by MS C v5.1 getpid() function
  4022.     this function apparently must return AX=0001h for INT 21/AH=80h to
  4023.       succeed
  4024.     one possible check for European MS-DOS 4.0 is to issue this call with
  4025.       AL=00h and check whether AL is nonzero on return
  4026. SeeAlso: AH=30h,AH=62h,AH=80h
  4027. Index:    installation check;European MS-DOS 4.0
  4028. --------D-2188-------------------------------
  4029. INT 21 U - European MS-DOS 4.0 - ???
  4030.     AH = 88h
  4031.     ???
  4032. Return: ???
  4033. SeeAlso: AH=87h
  4034. --------D-2189-------------------------------
  4035. INT 21 - European MS-DOS 4.0 - SLEEP
  4036.     AH = 89h
  4037.     CX = time in milliseconds or 0000h to give up time slice
  4038. Return: CF clear if successful
  4039.         CX = 0000h
  4040.     CF set on error
  4041.         AX = error code (interrupted system call)
  4042.         CX = sleep time remaining
  4043. Desc:    suspend the calling process for the specified duration
  4044. Notes:    the sleep interval is rounded up to the next higher increment of the
  4045.       scheduler clock, and may be extended further if other processes are
  4046.       running
  4047.     this call may be interrupted by signals (see AH=8Dh)
  4048.     reportedly called by Microsoft C 4.0 startup code
  4049.     background processes have higher priority than the foreground process,
  4050.       and should thus periodically yield the CPU
  4051. SeeAlso: AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah
  4052. --------v-2189-------------------------------
  4053. INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
  4054.     AH = 89h
  4055. Return: AX = 0123h if resident
  4056. SeeAlso: AH=84h"VIRUS",AH=90h"VIRUS"
  4057. --------D-218A-------------------------------
  4058. INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
  4059.     AH = 8Ah
  4060.     BL = range (00h command subtree, 01h any child)
  4061.     BH = suspend flag
  4062.         00h suspend if children exist but none are dead
  4063.         01h return if no dead children
  4064.     CX = Process ID of head of command subtree
  4065. Return: CF clear if successful
  4066.         AH = termination type (see #01792)
  4067.         AL = return code from child or aborting signal
  4068.         BX = PID of child (0000h if no dead children)
  4069.     CF set on error
  4070.         AX = error code (no child,interrupted system call)
  4071. Desc:    get return code from an asynchronously-executed child program,
  4072.       optionally waiting if no return code is available
  4073. SeeAlso: AH=4Bh,AH=4Dh,AH=80h,AH=8Dh
  4074.  
  4075. (Table 01792)
  4076. Values for termination type:
  4077.  00h    normal termination
  4078.  01h    aborted by Control-C
  4079.  02h    aborted by I/O error
  4080.  03h    terminate and stay resident
  4081.  04h    aborted by signal
  4082.  05h    aborted by program error
  4083. --------D-218B-------------------------------
  4084. INT 21 U - European MS-DOS 4.0 - ???
  4085.     AH = 8Bh
  4086.     ???
  4087. Return: ???
  4088. SeeAlso: AH=87h
  4089. --------D-218C-------------------------------
  4090. INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
  4091.     AH = 8Ch
  4092.     AL = signal number (see #01793)
  4093.     BL = action (see #01794)
  4094.     DS:DX -> signal handler (see #01795)
  4095. Return: CF clear if successful
  4096.         AL = previous action
  4097.         ES:BX -> previous signal handler
  4098.     CF set on error
  4099.         AX = error code (01h,invalid SigNumber or Action)
  4100.           (see #01680 at AH=59h/BX=0000h)
  4101. Desc:    set the routine which will be invoked on a number of exceptional
  4102.       conditions
  4103. Note:    all signals will be sent to the most recently installed handler
  4104. SeeAlso: AH=8Dh
  4105.  
  4106. (Table 01793)
  4107. Values for European MS-DOS 4.0 signal number:
  4108.  01h    SIGINTR        Control-C or user defined interrupt key
  4109.  08h    SIGTERM        program termination
  4110.  09h    SIGPIPE        broken pipe
  4111.  0Dh    SIGUSER1    reserved for user definition
  4112.  0Eh    SIGUSER2    reserved for user definition
  4113.  
  4114. (Table 01794)
  4115. Values for signal action:
  4116.  00h    SIG_DFL        terminate process on receipt
  4117.  01h    SIG_IGN        ignore signal
  4118.  02h    SIG_GET        signal is accepted
  4119.  03h    SIG_ERR        sender gets error
  4120.  04h    SIG_ACK        acknowledge received signal and clear it, but don't
  4121.               change current setting
  4122.  
  4123. (Table 01795)
  4124. Values signal handler is called with:
  4125.     AL = signal number (see #01793)
  4126.     AH = signal argument
  4127. Return: RETF, CF set: terminate process
  4128.     RETF, CF clear, ZF set: abort any interrupted system call with an error
  4129.     RETF, CF clear, ZF clear: restart any interrupted system call
  4130.     IRET: restart any interrupted system call
  4131. Note:    the signal handler may also perform a nonlocal GOTO by resetting the
  4132.       stack pointer and jumping; before doing so, it should dismiss the
  4133.       signal by calling this function with BL=04h
  4134. --------D-218D-------------------------------
  4135. INT 21 - European MS-DOS 4.0 - SEND SIGNAL
  4136.     AH = 8Dh
  4137.     AL = signal number (see #01793)
  4138.     BH = signal argument
  4139.     BL = action
  4140.         00h send to entire command subtree
  4141.         01h send only to specified process
  4142.     DX = Process ID
  4143. Return: CF clear if successful
  4144.     CF set on error
  4145.         AX = error code (01h,06h)(see #01680 at AH=59h/BX=0000h)
  4146. Desc:    invoke the exceptional-condition handler for the specified process
  4147. Note:    error 06h may be returned if one or more of the affected processes
  4148.       have an error handler for the signal
  4149. SeeAlso: AH=8Ch
  4150. --------D-218E00BH00-------------------------
  4151. INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
  4152.     AX = 8E00h
  4153.     BH = 00h
  4154.     BL = action
  4155.         00h set priority for command subtree
  4156.         01h set priority for specified process only
  4157.     CX = Process ID
  4158.     DH = 00h
  4159.     DL = change in priority (00h to get priority)
  4160. Return: CF clear if successful
  4161.         DL = process priority
  4162.         DH destroyed
  4163.     CF set on error
  4164.         AX = error code (01h,no such process)(see #01680 at AH=59h)
  4165. Desc:    specify or determine the execution priority of the specified process
  4166.       or the process and all of its children
  4167. SeeAlso: AH=81h
  4168. --------D-218F-------------------------------
  4169. INT 21 U - European MS-DOS 4.0 - ???
  4170.     AH = 8Fh
  4171.     ???
  4172. Return: ???
  4173. SeeAlso: AH=87h
  4174. --------D-2190-------------------------------
  4175. INT 21 U - European MS-DOS 4.0 - ???
  4176.     AH = 90h
  4177.     ???
  4178. Return: ???
  4179. SeeAlso: AH=87h
  4180. --------v-2190-------------------------------
  4181. INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
  4182.     AH = 90h
  4183. Return: AH = 01h if resident
  4184. SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS"
  4185. --------D-2191-------------------------------
  4186. INT 21 U - European MS-DOS 4.0 - ???
  4187.     AH = 91h
  4188.     ???
  4189. Return: ???
  4190. SeeAlso: AH=87h
  4191. --------D-2192-------------------------------
  4192. INT 21 U - European MS-DOS 4.0 - ???
  4193.     AH = 92h
  4194.     ???
  4195. Return: ???
  4196. SeeAlso: AH=87h
  4197. --------D-2193-------------------------------
  4198. INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
  4199.     AH = 93h
  4200.     CX = size in bytes
  4201. Return: CF clear if successful
  4202.         AX = read handle
  4203.         BX = write handle
  4204.     CF set on error
  4205.         AX = error code (08h) (see #01680 at AH=59h/BX=0000h)
  4206. Desc:    create a communications channel which may be used for interprocess
  4207.       data and command exchanges
  4208. SeeAlso: AH=3Ch,AH=3Fh"DOS",AH=40h"DOS",AH=84h
  4209. --------D-2194-------------------------------
  4210. INT 21 U - European MS-DOS 4.0 - ???
  4211.     AH = 94h
  4212.     ???
  4213. Return: ???
  4214. SeeAlso: AH=87h
  4215. --------D-2195-------------------------------
  4216. INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
  4217.     AH = 95h
  4218.     AL = new state
  4219.        00h enabled
  4220.        01h disabled, automatically fail hard errors
  4221. Return: AX = previous setting
  4222. Desc:    specify whether hard (critical) errors should automatically fail the
  4223.       system call or invoke an INT 24
  4224. SeeAlso: INT 24
  4225. --------D-2196-------------------------------
  4226. INT 21 U - European MS-DOS 4.0 - ???
  4227.     AH = 96h
  4228.     ???
  4229. Return: ???
  4230. --------D-2197-------------------------------
  4231. INT 21 U - European MS-DOS 4.0 - ???
  4232.     AH = 97h
  4233.     ???
  4234. Return: ???
  4235. --------v-219753-----------------------------
  4236. INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
  4237.     AX = 9753h
  4238. Return: never (executes original program) if virus resident
  4239. SeeAlso: AH=90h"VIRUS",AX=A1D5h"VIRUS",AX=9AD5h"VIRUS"
  4240. --------D-2198-------------------------------
  4241. INT 21 U - European MS-DOS 4.0 - ???
  4242.     AH = 98h
  4243.     ???
  4244. Return: ???
  4245. --------D-2199-------------------------------
  4246. INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
  4247.     AH = 99h
  4248.     DS:BX -> memory location to block on
  4249.     CX = timeout in milliseconds
  4250.     DH = nonzero if interruptable
  4251. Return: CF clear if awakened by event
  4252.         AX = 0000h
  4253.     CF set if unusual wakeup
  4254.         ZF set if timeout, clear if interrupted by signal
  4255.         AX = nonzero
  4256. Desc:    suspend calling process until another process sends a "restart" signal
  4257.       or a timeout occurs
  4258. SeeAlso: AH=9Ah,INT 2F/AX=0802h
  4259. --------D-219A-------------------------------
  4260. INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
  4261.     AH = 9Ah
  4262.     DS:BX -> memory location processes may have blocked on
  4263. Return: AX = number of processes awakened
  4264.     ZF set if no processes awakened
  4265. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  4266.       by several other European OEMs; its release falls between mainstream
  4267.       versions 3.2 and 3.3
  4268. Desc:    restart all processes waiting for the specified "restart" signal
  4269. SeeAlso: AH=99h,INT 2F/AX=0802h
  4270. --------v-219AD5------------------------
  4271. INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
  4272.     AX = 9AD5h
  4273. Return: AX = 9AD4h if resident
  4274. SeeAlso: AX=6969h"VIRUS",AX=A1D5h"VIRUS"
  4275. --------I-21A0-------------------------------
  4276. INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
  4277.     AH = A0h
  4278. Return: AL = display status (see #01796)
  4279.     BX = host window status (see #01797)
  4280. Program: Attachmate Extra! is a 3270 emulator by Attachmate Corporation
  4281. SeeAlso: AH=A1h
  4282.  
  4283. Bitfields for Attachmate Extra! display status:
  4284. Bit(s)    Description    (Table 01796)
  4285.  7    0=windowed, 1=enlarged
  4286.  6-3    current screen profile number 0-9
  4287.  2-0    active window number (0=PC, 1-4=host B-E, 5-6=notepad F-G)
  4288.  
  4289. Bitfields for host window status:
  4290. Bit(s)    Description    (Table 01797)
  4291.  15    reserved
  4292.  14    0=host E window installed, 1=not
  4293.  13    0=host E terminal on, 1=off
  4294.  12    0=host E window displayed, 1=not
  4295.  11    reserved
  4296.  10    0=host D window installed, 1=not
  4297.  9    0=host D terminal on, 1=off
  4298.  8    0=host D window displayed, 1=not
  4299.  7    reserved
  4300.  6    0=host C window installed, 1=not
  4301.  5    0=host C terminal on, 1=off
  4302.  4    0=host C window displayed, 1=not
  4303.  3    reserved
  4304.  2    0=host B window installed, 1=not
  4305.  1    0=host B terminal on, 1=off
  4306.  0    0=host B window displayed, 1=not
  4307. --------I-21A1-------------------------------
  4308. INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
  4309.     AH = A1h
  4310.     AL = new display status byte (see #01796)
  4311. SeeAlso: AH=A0h,AH=A2h
  4312. --------v-21A1D5-----------------------------
  4313. INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
  4314.     AX = A1D5h
  4315. Return: AX = 900Dh if resident
  4316. SeeAlso: AX=9753h,AX=9AD5h,AX=A55Ah
  4317. --------I-21A2-------------------------------
  4318. INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
  4319.     AH = A2h
  4320.     AL = new host window status byte (see #01798)
  4321. SeeAlso: AH=A1h
  4322.  
  4323. Bitfields for Attachmate Extra! host window status:
  4324. Bit(s)    Description    (Table 01798)
  4325.  7    0=power off, 1=power on
  4326.  6    0=not installed, 1=installed
  4327.  5-3    reserved
  4328.  2-0    window number 1-4=host B-E
  4329. --------I-21A3-------------------------------
  4330. INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
  4331.     AH = A3h
  4332.     AL = window number (1-4=host B-E)
  4333.     CX = 0001h
  4334.     DS:BX -> keystroke buffer
  4335.     DL = zero if keystroke buffer contains host function code (see #01799),
  4336.           non-zero if keystroke buffer contains ASCII character
  4337. Return: CX = zero if character sent, non-zero if not
  4338.     BX incremented if CX=0
  4339.  
  4340. (Table 01799)
  4341. Values for Attachmate Extra! host function code:
  4342.  00h=reserved    10h=PF16    20h=Clear    30h=SysReq
  4343.  01h=PF1    11h=PF17    21h=Print    31h=ErInp
  4344.  02h=PF2    12h=PF18    22h=Left    32h=ErEof
  4345.  03h=PF3    13h=PF19    23h=Right    33h=Ident
  4346.  04h=PF4    14h=PF20    24h=Up        34h=Test
  4347.  05h=PF5    15h=PF21    25h=Down    35h=Reset
  4348.  06h=PF6    16h=PF22    26h=Home    36h=DevCncl
  4349.  07h=PF7    17h=PF23    27h=Fast Left    37h=Dup
  4350.  08h=PF8    18h=PF24    28h=Fast Right    38h=FldMark
  4351.  09h=PF9    19h=Alt on    29h=Bksp    39h=Enter
  4352.  0Ah=PF10    1Ah=Alt off    2Ah=Insert    3Ah=CrSel
  4353.  0Bh=PF11    1Bh=Shift on    2Bh=Delete
  4354.  0Ch=PF12    1Ch=Shift off    2Ch=Backtab
  4355.  0Dh=PF13    1Dh=PA1        2Dh=Tab
  4356.  0Eh=PF14    1Eh=PA2        2Eh=Newline
  4357.  0Fh=PF15    1Fh=PA3        2Fh=Attn
  4358. --------I-21A4-------------------------------
  4359. INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
  4360.     AH = A4h
  4361.     AL = window number (1-4=host B-E)
  4362. Return: DS:BX -> 3270 display buffer
  4363. SeeAlso: AH=A5h,AH=B8h
  4364. --------I-21A5-------------------------------
  4365. INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
  4366.     AH = A5h
  4367.     AL = window number (1-4=host B-E)
  4368. Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
  4369. Note:    if the host window is configured with the Extended Attribute (EAB)
  4370.       feature, multiply the cursor position by 2 to obtain the byte offset
  4371.       into the display buffer
  4372. SeeAlso: AH=A4h
  4373. --------v-21A55A-----------------------------
  4374. INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
  4375.     AX = A55Ah
  4376. Return: AX = 5AA5h if resident
  4377. SeeAlso: AX=A1D5h,AX=AA00h
  4378. --------v-21AA00-----------------------------
  4379. INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
  4380.     AX = AA00h
  4381. Return: AX = 00AAh if resident
  4382. SeeAlso: AX=A55Ah,AX=AA03h
  4383. --------v-21AA03-----------------------------
  4384. INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
  4385.     AX = AA03h
  4386. Return: AX = 03AAh if resident
  4387. SeeAlso: AX=AA00h,AH=ABh
  4388. --------v-21AB-------------------------------
  4389. INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
  4390.     AH = ABh
  4391. Return: AX = 5555h if resident
  4392. SeeAlso: AX=AA03h,AX=ABCDh,AX=BBBBh"VIRUS"
  4393. --------v-21ABCD-----------------------------
  4394. INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
  4395.     AX = ABCDh
  4396. Return: AX = 1234h if installed
  4397. SeeAlso: AH=ABh"VIRUS",AX=ABCDh"SuperVirus"
  4398. --------v-21ABCD------------------------
  4399. INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
  4400.     AX = ABCDh
  4401. Return: AX = DCBAh if resident
  4402. SeeAlso: AX=ABCDh"VIRUS",AX=BBBBh"VIRUS"
  4403. --------I-21AF-------------------------------
  4404. INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
  4405.     AH = AFh
  4406. Return: DS:BX -> translate tables (see #01800)
  4407.  
  4408. Format of Attachmate Extra! translate tables:
  4409. Offset    Size    Description    (Table 01800)
  4410.  00h 256 BYTEs    ASCII to 3270 buffer code translate table
  4411. 100h 256 BYTEs    3270 buffer code to ASCII translate table
  4412. 200h 256 BYTEs    3270 buffer code to EBCDIC translate table
  4413. 300h 256 BYTEs    EBCDIC to 3270 buffer code translate table
  4414. --------v-21B3-------------------------------
  4415. INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
  4416.     AH = B3h
  4417. Return: AX = 9051h if resident
  4418. SeeAlso: AH=7Fh"VIRUS",AX=B974h"VIRUS"
  4419. --------N-21B300-----------------------------
  4420. INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
  4421.     AX = B300h
  4422. Return: AX = 0000h if supported???
  4423. Note:    this function appeared with the packet signing/Large Internet Packets/
  4424.       IPX Checksum-aware NetWare shells
  4425. SeeAlso: AX=B301h,AX=B302h
  4426. --------N-21B301-----------------------------
  4427. INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
  4428.     AX = B301h
  4429. Return: AX = 0000h if supported???
  4430.         BX:CX indicate signature level (see #01801)
  4431. Note:    this function appeared with the packet signing/Large Internet Packets/
  4432.       IPX Checksum-aware NetWare shells
  4433. SeeAlso: AX=B300h,AX=B304h,#02875 at INT 2F/AX=7A20h/BX=0000h
  4434.  
  4435. (Table 01801)
  4436. Values for signature level indicator:
  4437.  0000h:0000h = signature level 0
  4438.  0002h:0000h = signature level 1
  4439.  0202h:0000h = signature level 2
  4440.  0202h:0202h = signature level 3
  4441. --------N-21B302-----------------------------
  4442. INT 21 U - Novell NetWare - START PACKET SIGNING
  4443.     AX = B302h
  4444.     CX = server connection (1-8)
  4445.     DS:SI -> 24-byte buffer containing ???
  4446. Return: ???
  4447. Notes:    this function appeared with the packet signing/Large Internet Packets/
  4448.       IPX Checksum-aware NetWare shells
  4449.     if packet signing is active, this call is required if and only if the
  4450.       last call successfully authenticated the workstation to the server
  4451. SeeAlso: AX=B300h,#02875
  4452. --------N-21B304-----------------------------
  4453. INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
  4454.     AX = B304h
  4455.     BX:CX = new signature level (see AX=B301h)
  4456. Return: ???
  4457. Note:    this function appeared with the packet signing/Large Internet Packets/
  4458.       IPX Checksum-aware NetWare shells
  4459. SeeAlso: AX=B300h,AX=B301h,AX=B306h,#02875
  4460. --------N-21B306-----------------------------
  4461. INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
  4462.     AX = B306h
  4463.     CX = server connection number (01h-08h)
  4464. Return: ???
  4465. Note:    this function appeared with the packet signing/Large Internet Packets/
  4466.       IPX Checksum-aware NetWare shells
  4467. SeeAlso: AX=B300h,AX=B304h,#02875
  4468. --------N-21B4-------------------------------
  4469. INT 21 U - Novell NetWare - "AttachHandle"
  4470.     AH = B4h
  4471.     DS:SI -> input buffer (see #01802)
  4472. Return: AX = DOS file handle or return code
  4473. Note:    this is an interface provided by NetWare to give DOS file access to
  4474.       NetWare files on non-DOS systems such as Macintosh, OS/2, and Unix
  4475. SeeAlso: AX=E909h
  4476.  
  4477. Format of Novell NetWare input buffer:
  4478. Offset    Size    Description    (Table 01802)
  4479.  00h    BYTE    "WorkFileServer"
  4480.  01h    BYTE    access code
  4481.  02h    DWORD    "OpenHandle"
  4482.  06h    WORD    "OpenHandleCount"
  4483.  08h    DWORD    "OpenFileSize"
  4484. Note:    the six bytes at 02h-07h appear to be the six-byte NetWare handle
  4485.       returned by AX=E909h
  4486. --------N-21B500-----------------------------
  4487. INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
  4488.     AX = B500h
  4489. Return: ES:BX -> data
  4490.     CX = length
  4491. SeeAlso: AX=B501h,AX=B502h
  4492. --------N-21B501-----------------------------
  4493. INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
  4494.     AX = B501h
  4495. SeeAlso: AX=B500h,AX=B502h
  4496. --------N-21B502-----------------------------
  4497. INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
  4498.     AX = B502h
  4499. SeeAlso: AX=B500h,AX=B501h
  4500. --------N-21B5-------------------------------
  4501. INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
  4502.     AH = B5h
  4503.     AL = subfunction
  4504.         03h get task mode
  4505.         Return: AH = 00h
  4506.             AL = current task mode byte (see #01803)
  4507.         04h get task mode pointer
  4508.         Return: ES:BX -> task mode byte
  4509. Notes:    the task mode byte specifies how task cleanup should be performed, but
  4510.       is declared to be version-dependent
  4511.     allows a program to disable the automatic cleanup for programs managing
  4512.       task swapping, etc.
  4513.  
  4514. (Table 01803)
  4515. Values for NetWare task mode byte in version 3.01:
  4516.  00h-03h reserved
  4517.  04h     no task cleanup
  4518. --------N-21B505-----------------------------
  4519. INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
  4520.     AX = B505h
  4521.     ???
  4522. Return: ???
  4523. SeeAlso: AX=B502h,AX=B506h
  4524. --------N-21B506-----------------------------
  4525. INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
  4526.     AX = B506h
  4527. Return: AX = ??? (0002h)
  4528. SeeAlso: AX=B505h
  4529. --------N-21B507-----------------------------
  4530. INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
  4531.     AX = B507h
  4532. Return: AL = number of packet burst buffers (configured at shell load time)
  4533. --------N-21B6-------------------------------
  4534. INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
  4535.     AH = B6h
  4536.     AL = subfunction
  4537.         00h get extended file attributes
  4538.         01h set extended file attributes
  4539.         CL = extended file attributes (see #01804)
  4540.     DS:DX -> ASCIZ pathname (max 255 bytes)
  4541. Return: CF set on error
  4542.         AL = error code
  4543.         8Ch caller lacks privileges
  4544.         FEh not permitted to search directory
  4545.         FFh file not found
  4546.     CF clear if successful
  4547.         AL = 00h (success)
  4548.         CL = current extended file attributes (see #01804)
  4549. Note:    this function is supported by Advanced NetWare 2.1+
  4550. SeeAlso: AX=4300h,AH=E3h/SF=0Fh
  4551.  
  4552. Bitfields for NetWare extended file attributes:
  4553. Bit(s)    Description    (Table 01804)
  4554.  2-0    search mode (executables only)
  4555.     000 none (use shell's default search)
  4556.     001 search on all opens without path
  4557.     010 do not search
  4558.     011 search on read-only opens without path
  4559.     100 reserved
  4560.     101 search on all opens
  4561.     110 reserved
  4562.     111 search on all read-only opens
  4563.  3    reserved
  4564.  4    transactions on file tracked
  4565.  5    file's FAT indexed
  4566.  6    read audit (to be implemented)
  4567.  7    write audit (to be implemented)
  4568. --------N-21B7-------------------------------
  4569. INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
  4570.     AH = B7h
  4571.     AL = new value for HoldFileFlag
  4572. Return: AL = previous value of HoldFileFlag
  4573. Note:    this function provided backward compatibility with a bug in early
  4574.       DOS versions and CP/M, but is no longer used or supported
  4575. --------I-21B8-------------------------------
  4576. INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
  4577.     AH = B8h
  4578.     AL = window number (1-4=host B-E)
  4579.     DL = 01h
  4580. Notes:    only valid in CUT mode
  4581.     next AID keystroke (eg Enter) enables host buffer updates
  4582. SeeAlso: AH=A4h
  4583. --------N-21B800-----------------------------
  4584. INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
  4585.     AX = B800h
  4586.     CX = size of reply buffer (01h-3Fh)
  4587.     ES:BX -> reply buffer for capture flags table (see #01805)
  4588. Return: AL = status
  4589.         00h successful
  4590. Note:    this function is supported by Advanced NetWare 2.0+
  4591. SeeAlso: AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4592.  
  4593. Format of NetWare capture flags table:
  4594. Offset    Size    Description    (Table 01805)
  4595.  00h    BYTE    status (used internally, should be set to 00h)
  4596.  01h    BYTE    print flags (see #01806)
  4597.  02h    BYTE    tab size (01h-12h, default 08h)
  4598.  03h    BYTE    printer number on server (00h-04h, default 00h)
  4599.  04h    BYTE    number of copies to print (00h-FFh, default 01h)
  4600.  05h    BYTE    form type required in printer (default 00h)
  4601.  06h    BYTE    reserved
  4602.  07h 13 BYTEs    text to be placed on banner page
  4603.  14h    BYTE    reserved
  4604.  15h    BYTE    default local printer (00h = LPT1)
  4605.  16h    WORD    (big-endian) timeout in clock ticks for flushing capture file
  4606.           on inactivity, or 0000h to disable timeout
  4607.  18h    BYTE    flush capture file on LPT close if nonzero
  4608.  19h    WORD    (big-endian) maximum lines per page
  4609.  1Bh    WORD    (big-endian) maximum characters per line
  4610.  1Dh 13 BYTEs    name of form required in printer
  4611.  2Ah    BYTE    LPT capture flag
  4612.         00h inactive, FFh LPT device is being captured
  4613.  2Bh    BYTE    file capture flag
  4614.         00h if no file specified, FFh if capturing to file
  4615.  2Ch    BYTE    timing out (00h if no timeout in effect, FFh if timeout counter
  4616.           running)
  4617.  2Dh    DWORD    (big-endian) address of printer setup string
  4618.  31h    DWORD    (big-endian) address of printer reset string
  4619.  35h    BYTE    target connection ID
  4620.  36h    BYTE    capture in progress if FFh
  4621.  37h    BYTE    job queued for printing if FFh
  4622.  38h    BYTE    print job valid if FFh
  4623.  39h    DWORD    bindery object ID of print queue if previous byte FFh
  4624.  3Dh    WORD    (big-endian) print job number (1-999)
  4625.  
  4626. Bitfields for NetWare print flags:
  4627. Bit(s)    Description    (Table 01806)
  4628.  2    print capture file if interrupted by loss of connection
  4629.  3    no automatic form feed after print job
  4630.  6    printing control sequences interpreted by print service
  4631.  7    print banner page before capture file
  4632. --------N-21B801-----------------------------
  4633. INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
  4634.     AX = B801h
  4635.     CX = size of buffer (01h-3Fh)
  4636.     ES:BX -> buffer containing capture flags table (see #01805)
  4637. Return: AL = status
  4638.         00h successful
  4639. Note:    this function is supported by Advanced NetWare 2.0+
  4640. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4641. --------N-21B802-----------------------------
  4642. INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
  4643.     AX = B802h
  4644.     CX = size of reply buffer (01h-3Fh)
  4645.     DH = LPT port (00h-02h)
  4646.     ES:BX -> reply buffer for capture flags table (see #01805)
  4647. Return: AL = status
  4648.         00h successful
  4649. Note:    this function is supported by Advanced NetWare 2.1+
  4650. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4651. --------N-21B803-----------------------------
  4652. INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
  4653.     AX = B803h
  4654.     CX = size of buffer (01h-3Fh)
  4655.     DH = LPT port (00h-02h)
  4656.     ES:BX -> buffer containing capture flags table (see #01805)
  4657. Return: AL = status
  4658.         00h successful
  4659. Note:    this function is supported by Advanced NetWare 2.1+
  4660. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4661. --------N-21B804-----------------------------
  4662. INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
  4663.     AX = B804h
  4664. Return: DH = default LPT port (00h-02h)
  4665. Note:    this function is supported by Advanced NetWare 2.1+
  4666. SeeAlso: AX=B800h,AX=B805h,AH=DFh/DL=00h
  4667. --------N-21B805-----------------------------
  4668. INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
  4669.     AX = B805h
  4670.     DH = new default LPT port (00h-02h)
  4671. Return: AL = status
  4672.         00h successful
  4673. Note:    this function is supported by Advanced NetWare 2.1+
  4674. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h
  4675. --------N-21B806-----------------------------
  4676. INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
  4677.     AX = B806h
  4678.     DH = LPT port (00h-02h)
  4679.     BX:CX = print queue's object ID
  4680. Return: AL = status
  4681.         00h successful
  4682.         FFh job already set
  4683. Desc:    specify the print queue on which a print job is to be placed the next
  4684.       time a capture is started on the given printer port
  4685. Note:    this function is supported by Advanced NetWare 2.1+
  4686. SeeAlso: AX=B801h,AX=B807h,AH=E0h/SF=09h
  4687. --------N-21B807-----------------------------
  4688. INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
  4689.     AX = B807h
  4690.     DH = LPT port (00h-02h)
  4691.     BX = job number (see AH=E3h/SF=68h)
  4692.     SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
  4693. Return: AL = status
  4694.         00h successful
  4695.         FFh job already queued
  4696. Desc:    specify the capture file and print job to be used for subsequent
  4697.       output to the given printer port
  4698. Note:    this function is supported by Advanced NetWare 2.1+
  4699. SeeAlso: AX=B801h,AX=B806h,AH=E0h/SF=09h,AH=E3h/SF=68h
  4700. --------N-21B808-----------------------------
  4701. INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
  4702.     AX = B808h
  4703.     ES:BX -> 12-byte buffer for user name
  4704. Return: AL = status
  4705.         00h successful
  4706. Desc:    get the user name which is printed on the banner page
  4707. Notes:    this function is supported by Advanced NetWare 2.1+
  4708.     the default name is the login name of the user
  4709. SeeAlso: AX=B809h
  4710. --------N-21B809-----------------------------
  4711. INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
  4712.     AX = B809h
  4713.     ES:BX -> 12-byte buffer containing user name
  4714. Return: AL = status
  4715.         00h successful
  4716. Desc:    specify the user name which is printed on the banner page
  4717. Notes:    this function is supported by Advanced NetWare 2.1+
  4718.     the default name is the login name of the user
  4719. SeeAlso: AX=B808h
  4720. --------N-21B9-------------------------------
  4721. INT 21 U - Novell NetWare - "SpecialAttachableFunction"
  4722.     AH = B9h
  4723.     AL = FFh to hook this function
  4724.         ES:BX -> function to invoke on AH=B9h when AL<>FFh
  4725. Note:    this function is no longer used or supported by current versions of
  4726.       NetWare
  4727. --------v-21B974-----------------------------
  4728. INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
  4729.     AX = B974h
  4730. Return: AX = 2888h if resident
  4731. SeeAlso: AH=B3h"VIRUS",AH=D0h"VIRUS"
  4732. --------N-21BA-------------------------------
  4733. INT 21 U - Novell NetWare - "ReturnCommandComPointers"
  4734.     AH = BAh
  4735. Return: DX = environment segment
  4736.     ES:DI -> COMMAND.COM drive
  4737. Desc:    used to edit the COMSPEC and PATH variables in the master environment
  4738.       when mapping network drives
  4739. Note:    this function was documented in older Novell documents which are no
  4740.       longer available
  4741. --------N-21BB-------------------------------
  4742. INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
  4743.     AH = BBh
  4744.     AL = new EOJ flag
  4745.         00h disable EOJs
  4746.         01h enable EOJs
  4747. Return: AL = old EOJ flag
  4748. Desc:    specify whether the network shell should automatically generate an
  4749.       End of Job call when the root command processor regains control
  4750. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  4751.       Alloy NTNX
  4752. SeeAlso: AH=19h,AH=D6h
  4753. --------v-21BBBB-----------------------------
  4754. INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
  4755.     AX = BBBBh
  4756. Return: AX = 6969h
  4757. SeeAlso: AH=ABh"VIRUS",AH=BEh"VIRUS"
  4758. --------N-21BC-------------------------------
  4759. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
  4760.     AH = BCh
  4761.     AL = flags (see #01808)
  4762.     BX = file handle
  4763.     CX:DX = starting offset in file
  4764.     SI:DI = length of region to lock
  4765.     BP = timeout in timer ticks (1/18 sec)
  4766.         0000h = don't wait if already locked
  4767. Return: AL = status (see #01807)
  4768. Desc:    add the specified physical record to the log table, optionally locking
  4769.       it
  4770. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4771.       Alloy NTNX
  4772. SeeAlso: AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h
  4773.  
  4774. (Table 01807)
  4775. Values for NetWare status:
  4776.  00h    successful
  4777.  96h    no dynamic memory for file
  4778.  FEh    timed out
  4779.  FFh    failed
  4780.  
  4781. Bitfields for NetWare flags:
  4782. Bit(s)    Description    (Table 01808)
  4783.  0    lock as well as log record
  4784.  1    non-exclusive lock
  4785. --------N-21BD-------------------------------
  4786. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
  4787.     AH = BDh
  4788.     BX = file handle
  4789.     CX:DX = starting offset in file
  4790.     SI:DI = length of record
  4791. Return: AL = status
  4792.         00h successful
  4793.         FFh record not locked
  4794. Desc:    unlock the specified physical record but do not remove it from log
  4795.       table
  4796. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4797.       Alloy NTNX
  4798. SeeAlso: AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h
  4799. --------N-21BE-------------------------------
  4800. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
  4801.     AH = BEh
  4802.     BX = file handle
  4803.     CX:DX = starting offset within file
  4804.     SI:DI = record length in bytes
  4805. Return: AL = status
  4806.         00h successful
  4807.         FFh specified record not locked
  4808. Desc:    unlock the physical record and remove it from the log table
  4809. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4810.       Alloy NTNX
  4811. SeeAlso: AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h
  4812. --------v-21BE-------------------------------
  4813. INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
  4814.     AH = BEh
  4815. Return: AX = 1234h if resident
  4816. SeeAlso: AX=BBBBh,AX=BE00h
  4817. --------v-21BE00-----------------------------
  4818. INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
  4819.     AX = BE00h
  4820.     CF set
  4821. Return: CF clear if resident
  4822. SeeAlso: AH=BEh"VIRUS",AH=C0h"VIRUS"
  4823. --------N-21BF-------------------------------
  4824. INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
  4825.     AH = BFh
  4826.     AL = flags (see #01808)
  4827.     DS:DX -> opened FCB (see #01345 at AH=0Fh)
  4828.     BX:CX = offset
  4829.     BP = lock timeout in timer ticks (1/18 sec) if AL nonzero
  4830.     SI:DI = length
  4831. Return: AL = error code (see #01807)
  4832. Note:    this function was added in NetWare 4.6, but was removed some time prior
  4833.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4834.       documentation
  4835. SeeAlso: AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"
  4836. --------N-21C0-------------------------------
  4837. INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
  4838.     AH = C0h
  4839.     DS:DX -> non-extended FCB (see #01345 at AH=0Fh)
  4840.     BX:CX = offset
  4841. Return: AL = error code (see #01807)
  4842. Notes:    unlocks record but does not remove it from log table
  4843.     this function was added in NetWare 4.6, but was removed some time prior
  4844.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4845.       documentation
  4846. SeeAlso: AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h
  4847. --------v-21C0-------------------------------
  4848. INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
  4849.     AH = C0h
  4850. Return: AX = 0300h if "Slow"/"Zerotime" resident
  4851.     AX = 1234h if "Solano" resident
  4852. SeeAlso: AX=BE00h,AX=C000h"VIRUS",AX=C301h"VIRUS"
  4853. --------v-21C000-----------------------------
  4854. INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
  4855.     AX = C000h
  4856.     BX = most files infected by any other infected file
  4857. Return: AX = 76F3h if resident
  4858. SeeAlso: AH=C0h"VIRUS",AX=C001h,AX=C002h,AH=C1h"VIRUS"
  4859. --------v-21C001-----------------------------
  4860. INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
  4861.     AX = C001h
  4862. Return: nothing
  4863. Note:    if the virus is already memory resident this call disables any
  4864.       further infections
  4865. SeeAlso: AX=C000h,AX=C002h
  4866. --------v-21C002-----------------------------
  4867. INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
  4868.     AX = C002h
  4869. Return: nothing
  4870. Note:    if the virus is already memory resident and infection is disabled,
  4871.       this call re-enables it
  4872. SeeAlso: AX=C000h,AX=C001h
  4873. --------N-21C1-------------------------------
  4874. INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
  4875.     AH = C1h
  4876.     DS:DX -> opened FCB (see #01345 at AH=0Fh)
  4877.     BX:CX = offset
  4878. Return: AL = error code (see #01807)
  4879. Note:    unlocks record and removes it from log table
  4880.     this function was added in NetWare 4.6, but was removed some time prior
  4881.       to Advanced NetWare, and is no longer listed in current Novell
  4882.       documentation
  4883. SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h
  4884. --------v-21C1-------------------------------
  4885. INT 21 - VIRUS - "Solano" - ???
  4886.     AH = C1h
  4887.     ???
  4888. Return: ???
  4889. SeeAlso: AH=C0h"VIRUS"
  4890. --------N-21C2-------------------------------
  4891. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
  4892.     AH = C2h
  4893.     AL = flags
  4894.         bit 1: non-exclusive lock
  4895.     BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
  4896. Return: AL = status
  4897.         00h successful
  4898.         FEh timed out
  4899.         FFh failed
  4900. Desc:    attempt to lock all physical records listed in the log table
  4901. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4902.       Alloy NTNX
  4903.     status FFh will be returned if one or more physical records have been
  4904.       exclusively locked by another process
  4905. SeeAlso: AH=BFh,AH=C3h,AH=D1h
  4906. --------v-21C2-------------------------------
  4907. INT 21 - VIRUS - "Scott's Valley" - ???
  4908.     AH = C2h
  4909.     ???
  4910. Return: ???
  4911. SeeAlso: AH=C0h"VIRUS"
  4912. --------N-21C3-------------------------------
  4913. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
  4914.     AH = C3h
  4915. Desc:    unlock all currently-locked physical records in the log table, but do
  4916.       not remove them from the table
  4917. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4918.       Alloy NTNX
  4919. SeeAlso: AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h
  4920. --------v-21C301DXF1F1-----------------------
  4921. INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
  4922.     AX = C301h
  4923.     DX = F1F1h
  4924. Return: DX = 0E0Eh if resident
  4925. SeeAlso: AH=C0h"VIRUS",AX=C500h"VIRUS"
  4926. --------N-21C4-------------------------------
  4927. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
  4928.     AH = C4h
  4929. Desc:    unlock all physical records in the log table and remove them from the
  4930.       log table
  4931. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4932.       Alloy NTNX
  4933. SeeAlso: AH=BEh,AH=C1h,AH=D5h
  4934. --------N-21C500-----------------------------
  4935. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
  4936.     AX = C500h
  4937.     DS:DX -> semaphore name (counted string, max 127 bytes)
  4938.     CL = initial value for semaphore
  4939. Return: AL = status
  4940.         00h successful
  4941.         BL = number of processes having semaphore open
  4942.         CX:DX = semaphore handle
  4943.         03h name length greater than 127
  4944.         (refer to Novell document FYI.A.4611)
  4945.         FEh invalid name length
  4946.         FFh invalid semaphore value
  4947. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4948.       Alloy NTNX
  4949.     the semaphore's value is incremented by AX=C503h and decremented by
  4950.       AX=C502h
  4951. SeeAlso: AX=C501h,AX=C502h,AX=C503h,AX=C504h,AX=F220h/SF=00h
  4952. --------v-21C500-----------------------------
  4953. INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
  4954.     AX = C500h
  4955. Return: AX = 6731h if resident
  4956. SeeAlso: AX=C301h"VIRUS",AH=C6h"VIRUS"
  4957. --------N-21C501-----------------------------
  4958. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
  4959.     AX = C501h
  4960.     CX:DX = semaphore handle
  4961. Return: AL = status
  4962.         00h successful
  4963.         CX = semaphore value (-127 to 127)
  4964.         DL = count of processes which have the semaphore open
  4965.         FFh invalid handle
  4966. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4967.       Alloy NTNX
  4968. SeeAlso: AX=C500h"NetWare",AX=C502h,AX=C504h,AX=F220h/SF=01h
  4969. --------N-21C502-----------------------------
  4970. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
  4971.     AX = C502h
  4972.     CX:DX = semaphore handle
  4973.     BP = timeout limit in timer ticks (1/18 sec)
  4974.         0000h return immediately if semaphore already zero or negative
  4975. Return: AL = status
  4976.         00h successful
  4977.         FEh timeout
  4978.         FFh invalid handle
  4979. Desc:    decrement the semaphore's value, optionally waiting until its value
  4980.       becomes positive before decrementing
  4981. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4982.       Alloy NTNX
  4983. SeeAlso: AX=C500h"NetWare",AX=C501h,AX=C503h,AX=F220h/SF=02h
  4984. --------N-21C503-----------------------------
  4985. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
  4986.     AX = C503h
  4987.     CX:DX = semaphore handle
  4988. Return: AL = status
  4989.         00h successful
  4990.         01h semaphore value overflowed
  4991.         FFh invalid handle
  4992. Desc:    increment the semaphore's value and signal the first process (if any)
  4993.       in the queue waiting on the semaphore
  4994. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4995.       Alloy NTNX
  4996. SeeAlso: AX=C500h"NetWare",AX=C502h,AX=F220h/SF=03h
  4997. --------N-21C504-----------------------------
  4998. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
  4999.     AX = C504h
  5000.     CX:DX = semaphore handle
  5001. Return: AL = status
  5002.         00h successful
  5003.         FFh invalid handle
  5004. Desc:    decrement the semaphore's open count, and delete the semaphore if the
  5005.       count reaches zero
  5006. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  5007.       Alloy NTNX
  5008. SeeAlso: AX=C500h"NetWare",AX=C501h,AX=F220h/SF=04h
  5009. --------N-21C6-------------------------------
  5010. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
  5011.     AH = C6h
  5012.     AL = subfunction
  5013.         00h set old "compatibility" mode (default)
  5014.         01h set new extended locks mode
  5015.         02h get lock mode
  5016. Return: AL = current lock mode
  5017. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  5018.       Alloy NTNX
  5019.     the locking mode should be 01h for NetWare 4.61+ and Advanced
  5020.       NetWare 1.0+ locking calls, and 00h for all older calls
  5021. SeeAlso: AH=BCh,AH=C4h,AH=D0h
  5022. --------v-21C6-------------------------------
  5023. INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
  5024.     AH = C6h
  5025. Return: AL = 55h if resident
  5026. SeeAlso: AX=C500h"VIRUS",AX=C603h
  5027. --------v-21C603-----------------------------
  5028. INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
  5029.     AX = C603h
  5030.     BX = version number (002Ch or 002Dh)
  5031.     CF set
  5032. Return: CF clear if resident
  5033.     ZF set if resident and input BX matches version
  5034. SeeAlso: AX=C500h"VIRUS",AX=C700h"VIRUS"
  5035. --------N-21C700-----------------------------
  5036. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
  5037.     AX = C700h
  5038. Return: CF clear if successful
  5039.         AL = 00h
  5040.     CF set on error
  5041.         AL = error code
  5042.         96h out of memory
  5043.         FEh implicit transaction already active, converted to explicit
  5044.         FFh explicit transaction already active
  5045. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5046. SeeAlso: AX=C701h,AX=C702h,AX=C703h,AX=F222h/SF=01h
  5047. --------v-21C700-----------------------------
  5048. INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
  5049.     AX = C700h
  5050. Return: AL = 07h if resident
  5051. SeeAlso: AX=C603h"VIRUS",AH=CBh"VIRUS"
  5052. --------N-21C701-----------------------------
  5053. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
  5054.     AX = C701h
  5055. Return: AL = status (00h,FDh-FFh) (see #01809)
  5056.         00h successful
  5057.         CX:DX = transaction number
  5058.     CF clear except when AL=FFh
  5059. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5060. SeeAlso: AX=C700h"NetWare",AX=C703h,AX=F222h/SF=02h
  5061.  
  5062. (Table 01809)
  5063. Values for NetWare TTS status:
  5064.  00h    successful
  5065.  FDh    transaction tracking disabled
  5066.  FEh    transaction ended records locked
  5067.  FFh    no explicit transaction active
  5068. --------N-21C702-----------------------------
  5069. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
  5070.     AX = C702h
  5071. Return: AL = status
  5072.         00h not available
  5073.         01h available
  5074.         FDh available but disabled
  5075. Desc:    determine whether the default file server supports TTS
  5076. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5077. SeeAlso: AX=C700h,AX=C701h,AX=C703h,AX=F222h/SF=00h
  5078. --------N-21C703-----------------------------
  5079. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
  5080.     AX = C703h
  5081. Return: CF clear if successful
  5082.         AL = 00h
  5083.     CF set on error
  5084.         AL = error code (FDh-FFh) (see #01809)
  5085. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5086. SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C704h,AX=F222h/SF=03h
  5087. --------N-21C704-----------------------------
  5088. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
  5089.     AX = C704h
  5090.     CX:DX = transaction number (see AX=C701h)
  5091. Return: AL = status
  5092.         00h successful
  5093.         FFh not yet written to disk
  5094. Desc:    verify that a transaction has actually been written to disk
  5095. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5096.     transactions are written to disk in the order in which they are ended,
  5097.       but it may take as much as five seconds for the data to be written
  5098. SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C703h,AX=F222h/SF=04h
  5099. --------N-21C705-----------------------------
  5100. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
  5101.     AX = C705h
  5102. Return: AL = status
  5103.         00h successful
  5104.     CL = maximum logical record locks (default 0)
  5105.     CH = maximum physical record locks (default 0)
  5106. Desc:    get the per-application limits on record locks allowed before an
  5107.       implicit transaction is begun
  5108. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5109.     if either limit is FFh, implicit transactions are disabled for the
  5110.       corresponding lock type
  5111. SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=05h
  5112. --------N-21C706-----------------------------
  5113. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
  5114.     AX = C706h
  5115.     CL = maximum logical record locks (default 0)
  5116.     CH = maximum physical record locks (default 0)
  5117. Return: AL = status
  5118.         00h successful
  5119. Desc:    specify the per-application limits on record locks allowed before an
  5120.       implicit transaction is begun
  5121. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5122.     if either limit is set to FFh, implicit transactions are disabled for
  5123.       the corresponding lock type
  5124. SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=06h
  5125. --------N-21C707-----------------------------
  5126. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
  5127.     AX = C707h
  5128. Return: AL = status
  5129.         00h successful
  5130.     CL = maximum logical record locks (default 0)
  5131.     CH = maximum physical record locks (default 0)
  5132. Desc:    get the per-workstation limits on record locks allowed before an
  5133.       implicit transaction is begun
  5134. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5135.     if either limit is FFh, implicit transactions are disabled for the
  5136.       corresponding lock type
  5137. SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=07h
  5138. --------N-21C708-----------------------------
  5139. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
  5140.     AX = C708h
  5141.     CL = maximum logical record locks (default 0)
  5142.     CH = maximum physical record locks (default 0)
  5143. Return: AL = status
  5144.         00h successful
  5145. Desc:    specify the per-workstation limits on record locks allowed before an
  5146.       implicit transaction is begun
  5147. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5148.     if either limit is set to FFh, implicit transactions are disabled for
  5149.       the corresponding lock type
  5150. SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=08h
  5151. --------N-21C8-------------------------------
  5152. INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
  5153.     AH = C8h
  5154.     if function C6h lock mode 00h:
  5155.         DL = mode
  5156.         00h no wait
  5157.         01h wait
  5158.     if function C6h lock mode 01h:
  5159.         BP = timeout in timer ticks (1/18 sec)
  5160. Return: AL = error code
  5161. Desc:    used to provide TTS support for applications which are not aware of
  5162.       Novell's Transaction Tracking System
  5163. Note:    this function was added in NetWare 4.0, but was removed some time prior
  5164.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  5165.       documentation
  5166. SeeAlso: AH=C9h
  5167. --------N-21C9-------------------------------
  5168. INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
  5169.     AH = C9h
  5170. Return: AL = error code
  5171. Desc:    used to provide TTS support for applications which are not aware of
  5172.       Novell's Transaction Tracking System
  5173. Note:    this function was added in NetWare 4.0, but was removed some time prior
  5174.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  5175.       documentation
  5176. SeeAlso: AH=C8h
  5177. --------N-21CA-------------------------------
  5178. INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
  5179.     AH = CAh
  5180.     DS:DX -> FCB (see #01345 at AH=0Fh)
  5181.     if function C6h lock mode 01h:
  5182.         AL = log and lock flag
  5183.         00h log file only
  5184.         01h lock as well as log file
  5185.         BP = lock timeout in timer ticks (1/18 sec)
  5186. Return: AL = error code
  5187.         00h successful
  5188.         96h no dynamic memory for file
  5189.         FEh timeout
  5190.         FFh failed
  5191. Desc:    provides file locking support for FCBs
  5192. Note:    this function was added in NetWare 4.0, but was removed some time prior
  5193.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  5194.       documentation
  5195. SeeAlso: AH=CBh
  5196. --------v-21CA15-----------------------------
  5197. INT 21 - VIRUS - "Piter" - ???
  5198.     AX = CA15h
  5199.     ???
  5200. Return: ???
  5201. SeeAlso: AH=CCh"VIRUS"
  5202. --------N-21CB-------------------------------
  5203. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
  5204.     AH = CBh
  5205.     if function C6h lock mode 00h:
  5206.         DL = mode (00h no wait, 01h wait)
  5207.     if function C6h lock mode 01h:
  5208.         BP = lock timeout in timer ticks (1/18 sec), 0000h = no wait
  5209. Return: AL = status (00h,FEh,FFh) (see #01810)
  5210. Desc:    attempt to lock all files listed in the log table
  5211. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5212.       Alloy NTNX
  5213.     status FFh will be returned if one or more of the files have already
  5214.       been exclusively locked by another process
  5215. SeeAlso: AH=CAh,AH=CDh,AH=D1h,AH=EBh
  5216.  
  5217. (Table 01810)
  5218. Values for NetWare status:
  5219.  00h    successful
  5220.  FEh    timed out
  5221.  FFh    failed
  5222. --------v-21CB-------------------------------
  5223. INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
  5224.     AH = CBh
  5225. Return: AL = 07h if resident
  5226. SeeAlso: AX=C700h"VIRUS",AX=CB02h
  5227. --------v-21CB02-----------------------------
  5228. INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
  5229.     AX = CB02h
  5230. Return: AX = 02CBh if resident
  5231. SeeAlso: AH=CBh"VIRUS",AH=CCh"VIRUS"
  5232. --------N-21CC-------------------------------
  5233. INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
  5234.     AH = CCh
  5235.     DS:DX -> FCB (see #01345 at AH=0Fh)
  5236. Return: none
  5237. Desc:    unlocks file, but does not remove it from the log table or close it
  5238. Note:    this function was added in NetWare 4.0, but was removed some time prior
  5239.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  5240.       documentation
  5241. SeeAlso: AH=CAh,AH=CDh
  5242. --------v-21CC-------------------------------
  5243. INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
  5244.     AH = CCh
  5245. Return: AX = 0700h if resident
  5246. SeeAlso: AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"
  5247. --------N-21CD-------------------------------
  5248. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
  5249.     AH = CDh
  5250. Return: none
  5251. Desc:    unlock all files listed in the log table, but don't remove them from
  5252.       the table
  5253. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5254.       Alloy NTNX
  5255. SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h
  5256. --------v-21CD-------------------------------
  5257. INT 21 - VIRUS - "Westwood" - ???
  5258.     AH = CDh
  5259.     ???
  5260. Return: ???
  5261. SeeAlso: AH=CCh"VIRUS"
  5262. --------N-21CE-------------------------------
  5263. INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
  5264.     AH = CEh
  5265.     DS:DX -> FCB (see #01345 at AH=0Fh)
  5266. Return: AL = error code
  5267. Desc:    unlocks file and removes it from log table, then closes all opened and
  5268.       logged occurrences
  5269. Note:    this function was added in NetWare 4.0, but was removed some time prior
  5270.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  5271.       documentation
  5272. SeeAlso: AH=CAh,AH=CFh,AH=EDh"NetWare"
  5273. --------N-21CF-------------------------------
  5274. INT 21 - LANstep - ???
  5275.     AH = CFh
  5276.     ???
  5277. Return: ???
  5278. Program: LANstep is a redesign of the Waterloo Microsystems PORT network
  5279. --------N-21CF-------------------------------
  5280. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
  5281.     AH = CFh
  5282. Return: AL = 00h
  5283. Desc:    unlock and remove all files from log table
  5284. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5285.       Alloy NTNX
  5286. SeeAlso: AH=CAh,AH=CEh,AH=EBh"NetWare"
  5287. --------N-21D0-------------------------------
  5288. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
  5289.     AH = D0h
  5290.     DS:DX -> record string (counted string, max 99 data bytes)
  5291.     if function C6h lock mode 01h: (Novell, NTNX only)
  5292.         AL = flags
  5293.         bit 0: lock as well as log the record
  5294.         bit 1: non-exclusive lock
  5295.         BP = lock timeout in timer ticks (1/18 sec)
  5296. Return: AL = status
  5297.         00h successful
  5298.         96h no dynamic memory for file
  5299.         FEh timed out
  5300.         FFh unsuccessful
  5301. Desc:    add the specified logical record name to the log table, and optionally
  5302.       lock the record
  5303. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
  5304.       Banyan VINES, and Alloy NTNX
  5305.     locks on logical record names are advisory and may be ignored by other
  5306.       applications
  5307. SeeAlso: AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh
  5308. --------v-21D0-------------------------------
  5309. INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
  5310.     AH = D0h
  5311. Return: AX = 00D0h if resident
  5312. SeeAlso: AH=B3h"VIRUS",AH=D0h"ANTIARJ",AX=D000h"VIRUS"
  5313. --------v-21D0-----------------------------
  5314. INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK
  5315.     AH = D0h
  5316. Return: AH = D1h if resident
  5317. SeeAlso: AH=D0h"MALAGA"
  5318. --------v-21D000-----------------------------
  5319. INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
  5320.     AX = D000h
  5321. Return: BX = 1234h if resident
  5322. SeeAlso: AH=CCh"VIRUS",AH=D0h"ANTIARJ",AX=D000h"Warlock",AH=D5h"VIRUS",AX=D5AAh
  5323. --------v-21D000-----------------------------
  5324. INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
  5325.     AX = D000h
  5326.     CF clear
  5327. Return: CF set if resident (normal DOS return would be CF clear)
  5328. SeeAlso: AX=D000h"VIRUS",AH=D5h"VIRUS"
  5329. --------N-21D1-------------------------------
  5330. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
  5331.     AH = D1h
  5332.     AL = lock type (00h exclusive, 01h shareable)
  5333.     if function C6h lock mode 00h:
  5334.         DL = mode (00h no wait, 01h wait)
  5335.     if function C6h lock mode 01h: (Novell only)
  5336.         BP = lock timeout in timer ticks (1/18 sec), 0000h no wait
  5337. Return: AL = status (see #01810)
  5338. Desc:    attempt to lock all logical record names listed in the log table
  5339. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
  5340.       Banyan VINES, and Alloy NTNX
  5341.     status FFh will be returned if one or more logical records have been
  5342.       exclusively locked by another process
  5343.     locks on logical record names are advisory and may be ignored by other
  5344.       applications
  5345. SeeAlso: AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h
  5346. --------N-21D2-------------------------------
  5347. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
  5348.     AH = D2h
  5349.     DS:DX -> semaphore identifier (counted string up to 99 chars long)
  5350. Return: AL = status
  5351.         00h successful
  5352.         FFh no such record
  5353. Desc:    unlock the logical record name but do not remove it from the log table
  5354. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  5355.       Banyan VINES, and Alloy NTNX
  5356.     locks on logical record names are advisory and may be ignored by other
  5357.       applications
  5358. SeeAlso: AH=BDh,AH=D0h,AH=D3h,AH=D4h
  5359. --------v-21D2-------------------------------
  5360. INT 21 - VIRUS???
  5361.     AH = D2h
  5362.     ???
  5363. Return: ???
  5364. Note:    this call is intercepted by the Search&Destroy SDRes v27.03 bundled
  5365.       with Novell DOS 7, and is presumably some virus's installation check
  5366. SeeAlso: AH=4Ah/BX=00B6h
  5367. --------N-21D3-------------------------------
  5368. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
  5369.     AH = D3h
  5370. Desc:    unlock all currently-locked logical record names in the log table, but
  5371.       do not remove them from the table
  5372. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  5373.       Banyan VINES, and Alloy NTNX
  5374.     locks on logical record names are advisory and may be ignored by other
  5375.       applications
  5376. SeeAlso: AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h
  5377. --------N-21D4-------------------------------
  5378. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
  5379.     AH = D4h
  5380.     DS:DX -> logical record name (counted string up to 99 chars long)
  5381. Return: AL = status (00h,FFh) (see #01811)
  5382. Desc:    unlock and remove the logical record name from the log table
  5383. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  5384.       Banyan VINES, and Alloy NTNX
  5385.     locks on logical record names are advisory and may be ignored by other
  5386.       applications
  5387. SeeAlso: AH=BEh,AH=D0h,AH=D2h,AH=D5h
  5388.  
  5389. (Table 01811)
  5390. Values for NetWare status:
  5391.  00h    successful
  5392.  FFh    no such record name
  5393. --------N-21D5-------------------------------
  5394. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
  5395.     AH = D5h
  5396. Return: AL = error code (00h,FFh) (see #01811)
  5397. Desc:    unlock and remove all logical record name from the log table
  5398. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  5399.       Banyan VINES, and Alloy NTNX
  5400.     locks on logical record names are advisory and may be ignored by other
  5401.       applications
  5402. SeeAlso: AH=D1h,AH=D3h,AH=D4h
  5403. --------v-21D5-------------------------------
  5404. INT 21 - VIRUS - "Carfield" - ???
  5405.     AH = D5h
  5406.     ???
  5407. Return: ???
  5408. SeeAlso: AX=D5AAh,AH=F3h"Carfield"
  5409. --------v-21D5AA-----------------------------
  5410. INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
  5411.     AX = D5AAh
  5412. Return: AX = 2A55h if "Diamond-A" resident
  5413.     AX = 2A03h if "Diamond-B"-family virus resident
  5414. SeeAlso: AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh
  5415. --------v-21D5AABPDEAA-----------------------
  5416. INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
  5417.     AX = D5AAh
  5418.     BP = DEAAh
  5419. Return: SI = 4321h if resident
  5420. SeeAlso: AX=D5AAh,AX=DADAh"VIRUS"
  5421. --------N-21D6-------------------------------
  5422. INT 21 - Novell NetWare - WORKSTATION - END OF JOB
  5423.     AH = D6h
  5424.     BX = job flag (0000h current job, FFFFh all processes on workstation)
  5425. Return: AL = error code
  5426. Desc:    unlocks and clears all locked or logged files and records held by the
  5427.       process(es), closes all files, resets error and lock modes, and
  5428.       releases all network resources
  5429. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5430.       Alloy NTNX
  5431. SeeAlso: AH=BBh"NetWare",AH=D7h
  5432. --------N-21D7-------------------------------
  5433. INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
  5434.     AH = D7h
  5435. Return: AL = error code
  5436. Desc:    this function closes the caller's open files, logs it out from all
  5437.       file servers, detaches the workstation from all non-default file
  5438.       servers, and maps a drive to the default server's SYS:LOGIN directory
  5439. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5440.       Alloy NTNX
  5441. SeeAlso: AH=D6h,AH=E3h/SF=14h,AH=F1h"NetWare"
  5442. --------N-21D8-------------------------------
  5443. INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
  5444.     AH = D8h
  5445.     DL = resource number
  5446. Return: AL = status (00h successful, FFh unsucessful)
  5447. Note:    this function is no longer used or supported by NetWare, and is not
  5448.       documented in Novell documents
  5449. SeeAlso: AH=D9h
  5450. --------N-21D9-------------------------------
  5451. INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
  5452.     AH = D9h
  5453.     DL = resource number
  5454. Return: AL = status (00h successful, FFh unsucessful)
  5455. Note:    this function is no longer used or supported by NetWare, and is not
  5456.       documented in Novell documents
  5457. SeeAlso: AH=D8h
  5458. --------N-21DA-------------------------------
  5459. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
  5460.     AH = DAh
  5461.     DL = volume number
  5462.     ES:DI -> reply buffer (see #01812)
  5463. Return: AL = 00h
  5464. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5465.     operator console rights are not required to make this call
  5466.     reported total blocks and total unused blocks include the Hot Fix
  5467.       Table; the NetWare shell's implementation of INT 21/AH=36h will
  5468.       report values larger than 268MB as 268MB.
  5469. SeeAlso: AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h
  5470.  
  5471. Format of NetWare reply buffer:
  5472. Offset    Size    Description    (Table 01812)
  5473.  00h    WORD    sectors/block
  5474.  02h    WORD    total blocks on volume
  5475.  04h    WORD    unused blocks
  5476.  06h    WORD    total directory entries
  5477.  08h    WORD    unused directory entries
  5478.  0Ah 16 BYTEs    volume name, null padded
  5479.  1Ah    WORD    removable flag, 0000h = not removable
  5480. Note:    all words are big-endian
  5481. --------v-21DADA-----------------------------
  5482. INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
  5483.     AX = DADAh
  5484. Return: AH = A5h
  5485. SeeAlso: AX=D5AAh,AX=DAFEh"VIRUS"
  5486. --------v-21DAFE-----------------------------
  5487. INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
  5488.     AX = DAFEh
  5489. Return: AX = 1234h if resident
  5490. SeeAlso: AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"
  5491. --------N-21DB-------------------------------
  5492. INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
  5493.     AH = DBh
  5494. Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
  5495. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5496.       Alloy NTNX
  5497. SeeAlso: AH=0Eh
  5498. --------N-21DC-------------------------------
  5499. INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
  5500.     AH = DCh
  5501. Return: AL = logical connection number
  5502.         00h if NetWare not loaded or this machine is a non-dedicated server
  5503.     CX = station number in ASCII (CL = first digit)
  5504. Notes:    this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
  5505.       NTNX
  5506.     station number only unique for those PCs connected to same semaphore
  5507.       service
  5508. SeeAlso: AH=F2h"NetWare"
  5509. --------d-21DC-------------------------------
  5510. INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
  5511.     AH = DCh
  5512.     DX = state
  5513.         0000h turn on
  5514.         0001h turn off
  5515. SeeAlso: AX=FEDCh
  5516. --------v-21DC28-----------------------------
  5517. INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
  5518.     AX = DC28h
  5519. Return: AX = 1973h if resident
  5520. SeeAlso: AX=D000h"VIRUS",AX=DCBAh"VIRUS"
  5521. --------v-21DCBA-----------------------------
  5522. INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
  5523.     AX = DCBAh
  5524. Return: AX = ABCDh if resident
  5525. SeeAlso: AX=DC28h"VIRUS",AX=DEFEh"VIRUS"
  5526. --------N-21DD-------------------------------
  5527. INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
  5528.     AH = DDh
  5529.     DL = error mode
  5530.         00h invoke INT 24 on critical I/O errors (default)
  5531.         01h return NetWare extended error code in AL
  5532.         02h return error code in AL, mapped to standard DOS error codes
  5533. Return: AL = previous error mode
  5534. Note:    this function is supported by Advanced NetWare 2.0+
  5535. SeeAlso: INT 24
  5536. --------v-21DD-------------------------------
  5537. INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
  5538.     AH = DDh
  5539.     CX = number of bytes to copy
  5540.     DS:SI -> source of copy
  5541.     ES:DI -> destination of copy
  5542. Return: does not return normally; return address is caller's CS:0100h with
  5543.       AX = ???
  5544. SeeAlso: AX=DDEFh,AH=E0h"VIRUS",AH=EEh"VIRUS"
  5545. --------v-21DDEF------------------------
  5546. INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
  5547.     AX = DDEFh
  5548. Return: AX = EFDDh if resident
  5549. SeeAlso: AH=DDh"VIRUS",AH=DEh"VIRUS"
  5550. --------v-21DE-------------------------------
  5551. INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
  5552.     AH = DEh
  5553. Return: AH = DFh if resident
  5554. SeeAlso: AX=DAFEh,AX=DDEFh,AH=DEh"April 1st",AX=DEADh"90210"
  5555. --------v-21DE-------------------------------
  5556. INT 21 - VIRUS - "April 1st EXE" - ???
  5557.     AH = DEh
  5558.     ???
  5559. Return: ???
  5560. SeeAlso: AH=DEh"Durban",AX=DEADh"90210"
  5561. --------N-21DE-------------------------------
  5562. INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
  5563.     AH = DEh
  5564.     DL = broadcast mode
  5565.         00h receive server and workstation broadcasts (default)
  5566.         01h receive server broadcasts, discard user messages
  5567.         02h store server broadcasts for retrieval
  5568.         03h store all broadcasts for retrieval
  5569. Return: AL = new broadcast mode
  5570. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5571. --------N-21DE--DL04-------------------------
  5572. INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
  5573.     AH = DEh
  5574.     DL = 04h
  5575. Return: AL = current broadcast mode
  5576.         00h receive server and workstation broadcasts (default)
  5577.         01h receive server broadcasts, discard user message
  5578.         02h store server broadcasts for retrieval
  5579.         03h store all broadcasts for retrieval
  5580. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5581. --------N-21DE-------------------------------
  5582. INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
  5583.     AH = DEh
  5584.     DL = function
  5585.         05h disable shell timer interrupt checks
  5586.         06h enable shell timer interrupt checks
  5587. Return: ???
  5588. Note:    this function was added in NetWare 4.0, but is not listed in current
  5589.       Novell documentation and is probably no longer supported
  5590. --------v-21DEAD------------------------
  5591. INT 21 - VIRUS - "90210" - INSTALLATION CHECK
  5592.     AX = DEADh
  5593. Return: AX = AAAAh if resident
  5594. SeeAlso: AH=DEh"April 1st",AX=DEADh"Shifting",AX=DEDEh"VIRUS"
  5595. --------v-21DEAD------------------------
  5596. INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
  5597.     AX = DEADh
  5598. SeeAlso: AX=FEADh
  5599. SeeAlso: AX=DEADh"90210",AX=DEDEh"VIRUS"
  5600. --------v-21DEDE-----------------------------
  5601. INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
  5602.     AX = DEDEh
  5603. Return: AH = 41h if resident
  5604. SeeAlso: AX=DEADh"Shifting",AX=DEFEh"VIRUS"
  5605. --------v-21DEFE-----------------------------
  5606. INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
  5607.     AX = DEFEh
  5608. Return: AX = ABCDh if resident
  5609. SeeAlso: AX=DCBAh"VIRUS",AX=DEDEh"VIRUS",AH=E0h"VIRUS"
  5610. --------N-21DF--DL00-------------------------
  5611. INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
  5612.     AH = DFh
  5613.     DL = 00h
  5614. Return: AL = status
  5615.         00h successful
  5616. Desc:    this function redirects the default LPT to a capture file on the file
  5617.       server
  5618. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5619.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5620.     a print job is queued when the first character of output is captured
  5621. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
  5622. SeeAlso: AH=DFh/DL=04h,AX=F003h
  5623. --------N-21DF--DL01-------------------------
  5624. INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
  5625.     AH = DFh
  5626.     DL = 01h
  5627. Return: AL = status
  5628.         00h successful
  5629. Desc:    stop redirecting the default LPT, close the capture file, and release
  5630.       the job in the print queue for printing
  5631. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5632.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5633.     after this call, the default LPT defaults to local printing
  5634. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h
  5635. --------N-21DF--DL02-------------------------
  5636. INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
  5637.     AH = DFh
  5638.     DL = 02h
  5639. Return: AL = status
  5640.         00h successful
  5641. Desc:    this function ends the capture of the default LPT, removes the job from
  5642.       the print queue, and deletes the capture file unless it is a
  5643.       permanent capture file
  5644. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5645.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5646.     after this call, the default LPT defaults to local printing
  5647. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=06h
  5648. --------N-21DF--DL03-------------------------
  5649. INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
  5650.     AH = DFh
  5651.     DL = 03h
  5652. Return: AL = status
  5653.         00h successful
  5654. Desc:    this function closes the current capture file for the default LPT
  5655.       and starts printing it if it is not a permanent capture file
  5656. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5657.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5658.     if more data is sent to the LPT port after this call, a new capture
  5659.       file will be opeend
  5660. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h
  5661. --------N-21DF--DL04-------------------------
  5662. INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
  5663.     AH = DFh
  5664.     DL = 04h
  5665.     DH = LPT port (00h-02h)
  5666. Return: AL = status
  5667.         00h successful
  5668. Desc:    this function redirects the specified LPT to a capture file on the file
  5669.       server
  5670. Notes:    this function is supported by Advanced NetWare 2.1+
  5671.     a print job is queued when the first character of output is captured
  5672. SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
  5673. SeeAlso: AX=F003h
  5674. --------N-21DF--DL05-------------------------
  5675. INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
  5676.     AH = DFh
  5677.     DL = 05h
  5678.     DH = LPT port (00h-02h)
  5679. Return: AL = status
  5680.         00h successful
  5681. Desc:    stop redirecting the specified LPT, close the capture file, and release
  5682.       the job in the print queue for printing
  5683. Notes:    this function is supported by Advanced NetWare 2.1+
  5684.     after this call, the specified LPT defaults to local printing
  5685. SeeAlso: AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h
  5686. --------N-21DF--DL06-------------------------
  5687. INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
  5688.     AH = DFh
  5689.     DL = 06h
  5690.     DH = LPT port (00h-02h)
  5691. Return: AL = status
  5692.         00h successful
  5693. Desc:    this function ends the capture of the specified LPT, removes the job
  5694.       from the print queue, and deletes the capture file unless it is a
  5695.       permanent capture file
  5696. Notes:    this function is supported by Advanced NetWare 2.1+
  5697.     after this call, the specified LPT defaults to local printing
  5698. SeeAlso: AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h
  5699. --------N-21DF--DL07-------------------------
  5700. INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
  5701.     AH = DFh
  5702.     DL = 07h
  5703.     DH = LPT port (00h-02h)
  5704. Return: AL = status
  5705.         00h successful
  5706. Desc:    this function closes the current capture file for the specified LPT
  5707.       and starts printing it if it is not a permanent capture file
  5708. Notes:    this function is supported by Advanced NetWare 2.1+
  5709.     if more data is sent to the LPT port after this call, a new capture
  5710.       file will be opeend
  5711. SeeAlso: AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h
  5712. --------T-21DF00DX534C-----------------------
  5713. INT 21 U - Software Carousel - INSTALLATION CHECK
  5714.     AX = DF00h
  5715.     DX = 534Ch ("SL")
  5716.     DI = 534Ch ("SL")
  5717. Return: AX = 00FFh if installed
  5718.         ???
  5719. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5720. --------T-21DF01-----------------------------
  5721. INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
  5722.     AX = DF01h
  5723.     BL = task number (00h = next task)
  5724. Return: AL = status
  5725.         00h Carousel not running
  5726.         01h successful
  5727.         FFh unsucessful
  5728.         AH = error code (01h,02h) (see #01813)
  5729.  
  5730. (Table 01813)
  5731. Values for Software Carousel error code:
  5732.  00h    invalid subfunction in AL
  5733.  01h    invalid task number
  5734.  02h    tried to switch to task with no memory size
  5735.  03h    tried to kill program in partition with no program running
  5736.  04h    tried to change size of an active memory partition
  5737.  05h    invalid memory size
  5738.  06h    tried to send command to task with a pending previous command
  5739. --------T-21DF02-----------------------------
  5740. INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
  5741.     AX = DF02h
  5742.     BL = task number
  5743. Return: AL = status
  5744.         00h Carousel not running
  5745.         01h successful
  5746.         FFh unsucessful
  5747.         AH = error code (01h,03h) (see #01813)
  5748. --------T-21DF03-----------------------------
  5749. INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
  5750.     AX = DF03h
  5751.     BL = task number
  5752. Return: AL = status
  5753.         00h Carousel not running
  5754.         01h successful
  5755.         BL = partition state (00h no program running, 01h prog running)
  5756.         DX = partition size in KB
  5757.         FFh unsucessful
  5758.         AH = error code (01h) (see #01813)
  5759. SeeAlso: AX=DF05h
  5760. --------T-21DF04-----------------------------
  5761. INT 21 - Software Carousel - GET PARTITION NAME
  5762.     AX = DF04h
  5763.     BL = task number
  5764. Return: AL = status
  5765.         00h Carousel not running
  5766.         01h successful
  5767.         CX = length of name (00h if default partition name)
  5768.         ES:BX -> partition name (if CX nonzero)
  5769.         FFh unsucessful
  5770.         AH = error code (01h) (see #01813)
  5771. SeeAlso: AX=DF06h
  5772. --------T-21DF05-----------------------------
  5773. INT 21 - Software Carousel - CHANGE PARTITION SIZE
  5774.     AX = DF05h
  5775.     BL = task number
  5776.     DX = new size in KB
  5777. Return: AL = status
  5778.         00h Carousel not running
  5779.         01h successful
  5780.         FFh unsucessful
  5781.         AH = error code (01h,04h,05h) (see #01813)
  5782.     BX = minimum size allowed
  5783.     CX = maximum size available
  5784. SeeAlso: AX=DF03h
  5785. --------T-21DF06-----------------------------
  5786. INT 21 - Software Carousel - CHANGE PARTITION NAME
  5787.     AX = DF06h
  5788.     BL = task number
  5789.     CX = length of new name (00h to use default, max 18h)
  5790.     DS:SI -> new name
  5791. Return: AL = status
  5792.         00h Carousel not running
  5793.         01h successful
  5794.         FFh unsucessful
  5795.         AH = error code (01h) (see #01813)
  5796. SeeAlso: AX=DF04h
  5797. --------T-21DF07-----------------------------
  5798. INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
  5799.     AX = DF07h
  5800.     BL = task number
  5801.     CX = length of command (max 8 chars)
  5802.     DS:SI -> command line
  5803. Return: AL = status
  5804.         00h Carousel not running
  5805.         01h successful
  5806.         FFh unsucessful
  5807.         AH = error code (01h,06h) (see #01813)
  5808. Note:    the maximum length seems too small and may be a typo for 80 characters
  5809. --------T-21DF08-----------------------------
  5810. INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
  5811.     AX = DF08h
  5812.     BL = new state of keyboard (00h disabled, 01h enabled)
  5813. Return: AL = status
  5814.         00h Carousel not running
  5815.         01h successful
  5816. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5817. Note:    when the keyboard is is disabled, the user may neither access the
  5818.       Carousel menu nor switch to another memory section
  5819. --------T-21DF09-----------------------------
  5820. INT 21 - Software Carousel - BOOT THE SYSTEM
  5821.     AX = DF09h
  5822. Return: AL = status
  5823.         00h Carousel not running
  5824.         FFh unsucessful
  5825.         AH = error code (01h,03h) (see #01813)
  5826. Note:    this function never returns if successful
  5827. --------T-21DF0A-----------------------------
  5828. INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
  5829.     AX = DF0Ah
  5830. Return: AL = status
  5831.         00h Carousel not running
  5832.         01h successful
  5833.         BL = task number
  5834.         DX = memory size in KB
  5835.         FFh unsucessful
  5836.         AH = error code (01h,03h) (see #01813)
  5837. --------T-21DF0B-----------------------------
  5838. INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
  5839.     AX = DF0Bh
  5840.     BH = interrupt number or 00h
  5841.     BL = function number to invoke on partition switch
  5842.     CL = function number to call when it is safe for resident programs
  5843.         to perform DOS calls
  5844.     DS:DX -> FAR function to call if BH=00h
  5845. Return: AL = status
  5846.         00h Carousel not running
  5847.         01h successful
  5848.         FFh unsucessful
  5849.         AH = error code (01h,03h) (see #01813)
  5850. Notes:    the specified interrupt or FAR function is called with AH set to the
  5851.       appropriate one of the values specified in BL and CL, and BL set to
  5852.       the new task number
  5853.     the function specified by CL will not be called until the notification
  5854.       is enabled with AX=DF0Ch
  5855. SeeAlso: AX=DF0Ch
  5856. --------T-21DF0C-----------------------------
  5857. INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
  5858.     AX = DF0Ch
  5859. Return: AL = status
  5860.         00h Carousel not running
  5861.         01h successful
  5862. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5863. SeeAlso: AX=DF0Bh
  5864. --------O-21E0-------------------------------
  5865. INT 21 - Digital Research DOS Plus - CALL BDOS
  5866.     AH = E0h
  5867.     CL = BDOS function number (see #04019 at INT E0"CP/M-86")
  5868.     other registers as appropriate for function
  5869. Return: as appropriate for function
  5870. SeeAlso: AX=4459h,INT E0"CP/M-86"
  5871. --------E-21E0-------------------------------
  5872. INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
  5873.     AH = E0h
  5874.     ???
  5875. Return: ???
  5876. SeeAlso: AH=E1h"OS/286"
  5877. --------T-21E0-------------------------------
  5878. INT 21 - DoubleDOS - MENU CONTROL
  5879.     AH = E0h
  5880.     AL = subfunction
  5881.         01h exchange tasks
  5882.         73h resume invisible job if suspended
  5883.         74h kill other job
  5884.         75h suspend invisible job
  5885. Note:    identical to AH=F0h
  5886. SeeAlso: AH=F0h"DoubleDOS"
  5887. --------v-21E0-------------------------------
  5888. INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
  5889.     AH = E0h
  5890. Return: AX = 0300h if "Jerusalem" resident
  5891.     AX = DADAh if "Armagedon" resident
  5892. SeeAlso: AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh
  5893. --------N-21E0-------------------------------
  5894. INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
  5895.     AH = E0h
  5896.     DS:SI -> request buffer (see #01814)
  5897.     ES:DI -> reply buffer
  5898. Return: AL = status
  5899. Note:    this function was added in NetWare 4.0, but is no longer listed in
  5900.       current Novell documentation and may no longer be supported
  5901. SeeAlso: AH=E3h/SF=68h,AX=F211h/SF=06h,AX=F211h/SF=0Ah
  5902.  
  5903. Format of NetWare print spooling request buffer:
  5904. Offset    Size    Description    (Table 01814)
  5905.  00h    WORD    length of following data
  5906.  02h    BYTE    subfunction
  5907.         00h spool data to a capture file
  5908.         01h close and queue capture file
  5909.         02h set spool flags
  5910.         03h spool existing file
  5911.         04h get spool queue entry
  5912.         05h remove entry from spool queue
  5913.  03h    ???
  5914. SeeAlso: #02101
  5915. --------N-21E0--SF06-------------------------
  5916. INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
  5917.     AH = E0h subfn 06h
  5918.     DS:SI -> request buffer (see #01815)
  5919.     ES:DI -> reply buffer (see #01816)
  5920. Return: AL = status
  5921.         00h successful
  5922.         FFh no such printer
  5923. Desc:    get current state of specified printer attached to the server
  5924. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5925.       Alloy NTNX
  5926.  
  5927. Format of NetWare "Get Printer Status" request buffer:
  5928. Offset    Size    Description    (Table 01815)
  5929.  00h    WORD    0002h (length of following data)
  5930.  02h    BYTE    06h (subfunction "Get Printer Status")
  5931.  03h    BYTE    printer number (00h-04h)
  5932. SeeAlso: #01816
  5933.  
  5934. Format of NetWare "Get Printer Status" reply buffer:
  5935. Offset    Size    Description    (Table 01816)
  5936.  00h    WORD    (call) 0004h (size of following results buffer)
  5937.  02h    BYTE    flag: 00h printer active, FFh printer halted
  5938.  03h    BYTE    flag: 00h printer online, 01h printer offline
  5939.  04h    BYTE    current form type
  5940.  05h    BYTE    target printer number (00h-04h)
  5941.         same as number in request buffer unless rerouted by server
  5942.           console
  5943. SeeAlso: #01815
  5944. --------N-21E0--SF09-------------------------
  5945. INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
  5946.     AH = E0h subfn 09h
  5947.     DS:SI -> request buffer (see #01817)
  5948.     ES:DI -> reply buffer (see #01818)
  5949. Return: AL = status
  5950.         00h successful
  5951.         9Ch invalid path
  5952. Desc:    create a permanent capture file for the next print capture to be
  5953.       started
  5954. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5955.       Alloy NTNX
  5956.     the caller must have read, write, and create rights for the directory
  5957.       containing the capture file
  5958.  
  5959. Format of NetWare "Specify Capture File" request buffer:
  5960. Offset    Size    Description    (Table 01817)
  5961.  00h    WORD    length of following data (max 102h)
  5962.  02h    BYTE    09h (subfunction "Specify Capture File")
  5963.  03h    BYTE    directory handle or 00h
  5964.  04h    BYTE    length of filename
  5965.  05h  N BYTEs    name of capture file
  5966. SeeAlso: #01818
  5967.  
  5968. Format of NetWare reply buffer:
  5969. Offset    Size    Description    (Table 01818)
  5970.  00h    WORD    (call) 0000h (no results returned)
  5971. SeeAlso: #01817
  5972. --------v-21E00F-----------------------------
  5973. INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
  5974.     AX = E00Fh
  5975. Return: AX = 4C31h if resident
  5976. SeeAlso: AH=E0h"VIRUS",AH=E1h"VIRUS"
  5977. --------E-21E1-------------------------------
  5978. INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
  5979.     AH = E1h
  5980.     ???
  5981. Return: ???
  5982. Note:    protected mode only???
  5983. SeeAlso: AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h
  5984. --------T-21E1-------------------------------
  5985. INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
  5986.     AH = E1h
  5987. SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
  5988. SeeAlso: AH=F1h"DoubleDOS"
  5989. --------v-21E1-------------------------------
  5990. INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
  5991.     AH = E1h
  5992. Return: AX = 0300h if "Mendoza" resident
  5993.     AX = 0400h if "Fu Manchu" resident
  5994. SeeAlso: AX=E00Fh,AH=E4h"VIRUS"
  5995. --------N-21E1--SF00-------------------------
  5996. INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
  5997.     AH = E1h subfn 00h
  5998.     DS:SI -> request buffer (see #01819)
  5999.     ES:DI -> reply buffer (see #01820)
  6000. Return: AL = status
  6001.         00h successful
  6002.         FEh I/O error or out of dynamic workspace
  6003. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  6004. SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
  6005. SeeAlso: AH=E1h/SF=09h
  6006.  
  6007. Format of NetWare "Send Broadcast Message" request buffer:
  6008. Offset    Size    Description    (Table 01819)
  6009.  00h    WORD    length of following data (max 9Eh)
  6010.  02h    BYTE    00h (subfunction "Send Broadcast Message")
  6011.  03h    BYTE    number of connections (01h-64h)
  6012.  04h  N BYTEs    list of connections to receive broadcast message
  6013.     BYTE    length of message (01h-37h)
  6014.       N BYTEs    broadcast message (no control characters or characters > 7Eh)
  6015. SeeAlso: #01820
  6016.  
  6017. Format of NetWare "Send Broadcast Message" reply buffer:
  6018. Offset    Size    Description    (Table 01820)
  6019.  00h    WORD    (call) size of following results buffer (max 65h)
  6020.  02h    BYTE    number of connections
  6021.  03h  N BYTEs    list of per-connection results
  6022.         00h successful
  6023.         FCh message rejected due to lack of buffer space
  6024.         FDh invalid connection number
  6025.         FFh blocked (see also AH=E1h/SF=02h)
  6026. SeeAlso: #01819
  6027. --------N-21E1--SF01-------------------------
  6028. INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
  6029.     AH = E1h subfn 01h
  6030.     DS:SI -> request buffer (see #01821)
  6031.     ES:DI -> reply buffer (see #01822)
  6032. Return: AL = status
  6033.         00h successful
  6034.         FCh full message queue
  6035.         FEh out of dynamic workspace
  6036. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  6037. SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
  6038. SeeAlso: AX=F215h/SF=01h,AX=F215h/SF=0Bh
  6039.  
  6040. Format of NetWare "Get Broadcast Message" request buffer:
  6041. Offset    Size    Description    (Table 01821)
  6042.  00h    WORD    0001h (length of following data)
  6043.  02h    BYTE    01h (subfunction "Get Broadcast Message")
  6044. SeeAlso: #01822,#02109
  6045.  
  6046. Format of NetWare "Get Broadcast Message" reply buffer:
  6047. Offset    Size    Description    (Table 01822)
  6048.  00h    WORD    (call) size of following results buffer (max 38h)
  6049.  02h    BYTE    length of message (00h-37h)
  6050.         00h if no broadcast messages pending
  6051.  03h  N BYTEs    message (no control characters or characters > 7Eh)
  6052. SeeAlso: #01821,#02107,#02110
  6053. --------N-21E1--SF02-------------------------
  6054. INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
  6055.     AH = E1h subfn 02h
  6056.     DS:SI -> request buffer (see #01824)
  6057.     ES:DI -> reply buffer (see #01825)
  6058. Return: AL = error code
  6059. Note:    these functions are supported by NetWare 4.0+ but are not listed in
  6060.       _NetWare_System_Calls--DOS_; they may be obsolete
  6061. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=03h,AH=E1h/SF=04h,AH=E1h/SF=09h
  6062. SeeAlso: AX=F215h/SF=02h
  6063.  
  6064. Format of NetWare "Disable Broadcasts" request packet:
  6065. Offset    Size    Description    (Table 01823)
  6066.  00h    WORD    0001h (length of following data)
  6067.  02h    BYTE    02h (subfunction "Enable Broadcast Messages")
  6068. SeeAlso: #01824,#01825
  6069. --------N-21E1--SF03-------------------------
  6070. INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
  6071.     AH = E1h subfn 03h
  6072.     DS:SI -> request buffer (see #01824)
  6073.     ES:DI -> reply buffer (see #01825)
  6074. Return: AL = error code
  6075. Note:    these functions are supported by NetWare 4.0+ but are not listed in
  6076.       _NetWare_System_Calls--DOS_; they may be obsolete
  6077. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=02h,AH=E1h/SF=04h,AH=E1h/SF=09h
  6078. SeeAlso: AX=F215h/SF=03h
  6079.  
  6080. Format of NetWare "Enable Broadcast Messages" request buffer:
  6081. Offset    Size    Description    (Table 01824)
  6082.  00h    WORD    0001h (length of following data)
  6083.  02h    BYTE    03h (subfunction "Enable Broadcast Messages")
  6084. SeeAlso: #01825,#01823
  6085.  
  6086. Format of NetWare "Enable/Disable Broadcast Messages" reply buffer:
  6087. Offset    Size    Description    (Table 01825)
  6088.  00h    WORD    (call) 0000h (no data returned)
  6089. SeeAlso: #01824,#01823
  6090. --------N-21E1--SF04-------------------------
  6091. INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
  6092.     AH = E1h subfn 04h
  6093.     DS:SI -> request buffer (see #01826)
  6094.     ES:DI -> reply buffer (see #01827)
  6095. Return: AL = status
  6096.         00h successful
  6097.         FEh I/O error or out of dynamic workspace
  6098. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  6099.     message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
  6100.       connections should be used for peer-to-peer communications as these
  6101.       protocols do not use file server time
  6102. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
  6103.  
  6104. Format of NetWare "Send Personal Message" request buffer:
  6105. Offset    Size    Description    (Table 01826)
  6106.  00h    WORD    length of following data (max E5h)
  6107.  02h    BYTE    04h (subfunction "Send Personal Message")
  6108.  03h    BYTE    number of connections (01h-64h)
  6109.  04h  N BYTEs    list of connections to receive broadcast message
  6110.     BYTE    length of message (01h-7Eh)
  6111.       N BYTEs    message (no control characters or characters > 7Eh)
  6112. SeeAlso: #01827
  6113.  
  6114. Format of NetWare "Send Personal Message" reply buffer:
  6115. Offset    Size    Description    (Table 01827)
  6116.  00h    WORD    (call) size of following results buffer (max 65h)
  6117.  02h    BYTE    number of connections
  6118.  03h  N BYTEs    list of per-connection results
  6119.         00h successful
  6120.         FCh message rejected because queue is full (contains 6 msgs)
  6121.         FDh incomplete pipe
  6122.         FFh failed
  6123. SeeAlso: #01826
  6124. --------N-21E1--SF05-------------------------
  6125. INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
  6126.     AH = E1h subfn 05h
  6127.     DS:SI -> request buffer (see #01828)
  6128.     ES:DI -> reply buffer (see #01829)
  6129. Return: AL = status
  6130.         00h successful
  6131.         FEh out of dynamic workspace
  6132. Desc:    return the oldest message in the default file server's message queue
  6133.       for the calling workstation
  6134. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  6135. SeeAlso: AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h
  6136.  
  6137. Format of NetWare "Get Personal Message" request buffer:
  6138. Offset    Size    Description    (Table 01828)
  6139.  00h    WORD    0001h (length of following data)
  6140.  02h    BYTE    05h (subfunction "Get Personal Message")
  6141. SeeAlso: #01829
  6142.  
  6143. Format of NetWare "Get Personal Message" reply buffer:
  6144. Offset    Size    Description    (Table 01829)
  6145.  00h    WORD    (call) size of following results buffer (max 80h)
  6146.  02h    BYTE    connection number of sending station
  6147.  03h    BYTE    length of message (00h-7Eh)
  6148.         00h if no personal messages pending
  6149.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  6150. SeeAlso: #01828
  6151. --------N-21E1--SF06-------------------------
  6152. INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
  6153.     AH = E1h subfn 06h
  6154.     DS:SI -> request buffer (see #01830)
  6155.     ES:DI -> reply buffer (see #01831)
  6156. Return: AL = status
  6157.         00h successful
  6158.         FEh out of dynamic workspace
  6159. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  6160. SeeAlso: AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h
  6161.  
  6162. Format of NetWare "Open Message Pipe" request buffer:
  6163. Offset    Size    Description    (Table 01830)
  6164.  00h    WORD    length of following data (max 66h)
  6165.  02h    BYTE    06h (subfunction "Open Message Pipe")
  6166.  03h    BYTE    number of pipes to open (01h-64h)
  6167.  04h  N BYTEs    list of connection numbers
  6168. SeeAlso: #01831,#01832,#01835
  6169.  
  6170. Format of NetWare "Open Message Pipe" reply buffer:
  6171. Offset    Size    Description    (Table 01831)
  6172.  00h    WORD    (call) size of following results buffer (max 65h)
  6173.  02h    BYTE    number of connections
  6174.  03h  N BYTEs    list of results
  6175.         00h successful
  6176.         FEh incomplete (target half not yet created)
  6177.         FFh failed
  6178. SeeAlso: #01830,#01833,#01836
  6179. --------N-21E1--SF07-------------------------
  6180. INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
  6181.     AH = E1h subfn 07h
  6182.     DS:SI -> request buffer (see #01832)
  6183.     ES:DI -> reply buffer (see #01833)
  6184. Return: AL = status
  6185.         00h successful
  6186.         FCh full message queue
  6187.         FEh out of dynamic workspace
  6188. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  6189. SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
  6190.  
  6191. Format of NetWare "Close Mesage Pipe" request buffer:
  6192. Offset    Size    Description    (Table 01832)
  6193.  00h    WORD    length of following data (max 66h)
  6194.  02h    BYTE    07h (subfunction "Close Message Pipe")
  6195.  03h    BYTE    number of pipes to close (01h-64h)
  6196.  04h  N BYTEs    list of connection numbers
  6197. SeeAlso: #01830,#01833
  6198.  
  6199. Format of NetWare "Close Message Pipe" reply buffer:
  6200. Offset    Size    Description    (Table 01833)
  6201.  00h    WORD    (call) size of following results buffer (max 65h)
  6202.  02h    BYTE    number of connections
  6203.  03h  N BYTEs    list of results
  6204.         00h successful
  6205.         FDh failed
  6206.         FFh no such pipe
  6207. SeeAlso: #01831,#01832
  6208. --------N-21E1--SF08-------------------------
  6209. INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
  6210.     AH = E1h subfn 08h
  6211.     DS:SI -> request buffer (see #01835)
  6212.     ES:DI -> reply buffer (see #01836)
  6213. Return: AL = status (see #01834)
  6214. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  6215. SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h,AX=F215h/SF=08h
  6216.  
  6217. (Table 01834)
  6218. Values for NetWare function status:
  6219.  00h    successful
  6220.  FCh    full message queue
  6221.  FEh    out of dynamic workspace
  6222. SeeAlso: #01839
  6223.  
  6224. Format of NetWare "Check Pipe Status" request buffer:
  6225. Offset    Size    Description    (Table 01835)
  6226.  00h    WORD    length of following data (max 66h)
  6227.  02h    BYTE    08h (subfunction "Check Pipe Status")
  6228.  03h    BYTE    number of pipes to monitor (01h-64h)
  6229.  04h  N BYTEs    list of connection numbers
  6230. SeeAlso: #01830,#01836
  6231.  
  6232. Format of NetWare "Check Pipe Status" reply buffer:
  6233. Offset    Size    Description    (Table 01836)
  6234.  00h    WORD    (call) size of following results buffer (max 65h)
  6235.  02h    BYTE    number of connections
  6236.  03h  N BYTEs    list of pipe statuses
  6237.         00h open
  6238.         FEh incomplete
  6239.         FFh closed
  6240. SeeAlso: #01831,#01835,#02108
  6241. --------N-21E1--SF09-------------------------
  6242. INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
  6243.     AH = E1h subfn 09h
  6244.     DS:SI -> request buffer (see #01837)
  6245.     ES:DI -> reply buffer (see #01838)
  6246. Return: AL = status (see #01834)
  6247. Desc:    send a one-line message to the system console on the default file
  6248.       server
  6249. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  6250. SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
  6251. SeeAlso: AX=F215h/SF=09h
  6252.  
  6253. Format of NetWare "Broadcast to Console" request buffer:
  6254. Offset    Size    Description    (Table 01837)
  6255.  00h    WORD    length of following data (max 3Eh)
  6256.  02h    BYTE    09h (subfunction "Broadcast to Console")
  6257.  03h    BYTE    length of message (01h-3Ch)
  6258.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  6259. SeeAlso: #01838
  6260.  
  6261. Format of NetWare reply buffer:
  6262. Offset    Size    Description    (Table 01838)
  6263.  00h    WORD    (call) 0000h (no results returned)
  6264. SeeAlso: #01837
  6265. --------E-21E2-------------------------------
  6266. INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
  6267.     AH = E2h
  6268.     ???
  6269. Return: ???
  6270. SeeAlso: AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"
  6271. --------N-21E2-------------------------------
  6272. INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
  6273.     AH = E2h
  6274.     AL = character
  6275. Return: AL = 00h successful
  6276.          01h buffer full (128 characters)
  6277. SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
  6278. SeeAlso: AH=F2h"DoubleDOS"
  6279. --------N-21E2--SF00-------------------------
  6280. INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
  6281.     AH = E2h subfn 00h
  6282.     DS:SI -> request buffer (see #01840)
  6283.     ES:DI -> reply buffer (see #01841)
  6284. Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
  6285. Desc:    set the target handle to reference the directory specified by the
  6286.       source handle and the source path; both handles must refer to the
  6287.       same file server
  6288. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6289.       Alloy NTNX
  6290.     the target handle is not changed if this function fails
  6291. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=00h
  6292.  
  6293. (Table 01839)
  6294. Values for NetWare function status:
  6295.  00h    successful
  6296.  84h    not permitted to create
  6297.  8Ah    not permitted to delete
  6298.  8Bh    not permitted to rename
  6299.  8Ch    not permitted to modify
  6300.  98h    nonexistent volume
  6301.  9Bh    invalid directory handle
  6302.  9Ch    invalid path
  6303.  9Eh    invalid filename
  6304.  9Fh    directory currently in use
  6305.  A0h    directory not empty
  6306.  C6h    no console rights
  6307.  FCh    no such bindery object
  6308. SeeAlso: #01834,#01866
  6309.  
  6310. Format of NetWare "Set Directory Handle" request buffer:
  6311. Offset    Size    Description    (Table 01840)
  6312.  00h    WORD    length of following data (max 103h)
  6313.  02h    BYTE    00h (subfunction "Set Directory Handle")
  6314.  03h    BYTE    directory handle of target
  6315.  04h    BYTE    directory handle of source
  6316.  05h    BYTE    length of source directory path (01h-FFh)
  6317.  06h  N BYTEs    source directory path
  6318. SeeAlso: #01841
  6319.  
  6320. Format of NetWare reply buffer:
  6321. Offset    Size    Description    (Table 01841)
  6322.  00h    WORD    (call) 0000h (no results returned)
  6323. SeeAlso: #01840
  6324. --------N-21E2--SF01-------------------------
  6325. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
  6326.     AH = E2h subfn 01h
  6327.     DS:SI -> request buffer (see #01842)
  6328.     ES:DI -> reply buffer (see #01843)
  6329. Return: AL = status (00h,9Bh) (see #01839)
  6330. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6331.       Alloy NTNX
  6332. SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h,AX=F216h/SF=01h
  6333.  
  6334. Format of NetWare "Get Directory Path" request buffer:
  6335. Offset    Size    Description    (Table 01842)
  6336.  00h    WORD    0002h (length of following data)
  6337.  02h    BYTE    01h (subfunction "Get Directory Path")
  6338.  03h    BYTE    directory handle
  6339. SeeAlso: #01843,#01844
  6340.  
  6341. Format of NetWare "Get Directory Path" reply buffer:
  6342. Offset    Size    Description    (Table 01843)
  6343.  00h    WORD    (call) length of following data buffer
  6344.  02h    BYTE    length of directory path (01h-FFh)
  6345.  03h  N BYTEs    full directory path including volume
  6346. SeeAlso: #01842,#01845
  6347. --------N-21E2--SF02-------------------------
  6348. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
  6349.     AH = E2h subfn 02h
  6350.     DS:SI -> request buffer (see #01844)
  6351.     ES:DI -> reply buffer (see #01845)
  6352. Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
  6353. Desc:    get information about the first or next subdirectory of the specified
  6354.       directory
  6355. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6356.       Alloy NTNX
  6357. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h,AX=F216h/SF=02h
  6358.  
  6359. Format of NetWare "Scan Directory Information" request buffer:
  6360. Offset    Size    Description    (Table 01844)
  6361.  00h    WORD    length of following data (max 104h)
  6362.  02h    BYTE    02h (subfunction "Scan Directory Information")
  6363.  03h    BYTE    directory handle
  6364.  04h    WORD    (big-endian) subdirectory number
  6365.         0000h for first call, returned subdir number + 1 on next call
  6366.  06h    BYTE    length of directory path
  6367.  07h  N BYTEs    directory path
  6368. SeeAlso: #01842,#01845
  6369.  
  6370. Format of NetWare "Scan Directory Information" reply buffer:
  6371. Offset    Size    Description    (Table 01845)
  6372.  00h    WORD    (call) 001Ch (length of following data buffer)
  6373.  02h 16 BYTEs    subdirectory name
  6374.  12h    DWORD    (big-endian) date and time of creation (see #01846)
  6375.  16h    DWORD    (big-endian) object ID of owner
  6376.  1Ah    BYTE    maximum directory rights (see #01849)
  6377.  1Bh    BYTE    unused
  6378.  1Ch    WORD    (big-endian) subdirectory number
  6379. SeeAlso: #01843,#01844,#02111 at AX=F216h/SF=02h
  6380.  
  6381. Bitfields for NetWare date and time:
  6382. Bit(s)    Description    (Table 01846)
  6383.  31-25    year-1980
  6384.  24-21    month
  6385.  20-16    day
  6386.  15-11    hour
  6387.  10-5    minute
  6388.  4-0    second
  6389. --------N-21E2--SF03-------------------------
  6390. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
  6391.     AH = E2h subfn 03h
  6392.     DS:SI -> request buffer (see #01847)
  6393.     ES:DI -> reply buffer (see #01848)
  6394. Return: AL = status (00h,98h,9Bh) (see #01839)
  6395. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6396.       Alloy NTNX
  6397. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=02h,AX=F216h/SF=03h
  6398.  
  6399. Format of NetWare "Get Effective Directory Rights (old)" request buffer:
  6400. Offset    Size    Description    (Table 01847)
  6401.  00h    WORD    length of following data (max 102h)
  6402.  02h    BYTE    03h (subfunction "Get Effective Directory Rights (old)")
  6403.  03h    BYTE    directory handle
  6404.  04h    BYTE    length of directory path (00h-FFh)
  6405.  05h  N BYTEs    directory path
  6406. SeeAlso: #01848,#01850
  6407.  
  6408. Format of NetWare "Get Effective Directory Rights" reply buffer:
  6409. Offset    Size    Description    (Table 01848)
  6410.  00h    WORD    (call) 0001h (length of following data buffer)
  6411.  02h    BYTE    effective directory rights (see #01849)
  6412. SeeAlso: #01847
  6413.  
  6414. Bitfields for NetWare directory rights:
  6415. Bit(s)    Description    (Table 01849)
  6416.  0    reading allowed
  6417.  1    writing allowed
  6418.  2    opens allowed
  6419.  3    file creation allowed
  6420.  4    deletion allowed
  6421.  5    "parental" may create/delete subdirectories and grant/revoke trustee
  6422.       rights
  6423.  6    directory search allowed
  6424.  7    file attributes may be changed
  6425. SeeAlso: #01848,#01850
  6426. --------N-21E2--SF04-------------------------
  6427. INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
  6428.     AH = E2h subfn 04h
  6429.     DS:SI -> request buffer (see #01850)
  6430.     ES:DI -> reply buffer (see #01851)
  6431. Return: AL = status (00h,8Ch,98h,9Ch) (see #01839)
  6432. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6433.       Alloy NTNX
  6434. SeeAlso: AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh,AX=F216h/SF=04h
  6435.  
  6436. Format of NetWare "Modify Maximum Rights Mask" request buffer:
  6437. Offset    Size    Description    (Table 01850)
  6438.  00h    WORD    length of following data (max 104h)
  6439.  02h    BYTE    04h (subfunction "Modify Maximum Rights Mask")
  6440.  03h    BYTE    directory handle
  6441.  04h    BYTE    rights to grant (see #01849)
  6442.  05h    BYTE    rights to revoke (see #01849)
  6443.  06h    BYTE    length of directory path (00h-FFh)
  6444.  07h  N BYTEs    directory path
  6445. Note:    the rights specified at offset 05h are revoked first, and then the
  6446.       rights specified at offset 04h are added to the resulting rights
  6447.       mask
  6448. SeeAlso: #01847,#01851
  6449.  
  6450. Format of NetWare reply buffer:
  6451. Offset    Size    Description    (Table 01851)
  6452.  00h    WORD    (call) 0000h (no results returned)
  6453. SeeAlso: #01850
  6454. --------N-21E2--SF05-------------------------
  6455. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
  6456.     AH = E2h subfn 05h
  6457.     DS:SI -> request buffer (see #01852)
  6458.     ES:DI -> reply buffer (see #01853)
  6459. Return: AL = status (00h,98h) (see #01839)
  6460. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6461.       Alloy NTNX
  6462. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
  6463. SeeAlso: AX=F216h/SF=05h
  6464.  
  6465. Format of NetWare "Get Volume Number" request buffer:
  6466. Offset    Size    Description    (Table 01852)
  6467.  00h    WORD    length of following data (max 12h)
  6468.  02h    BYTE    05h (subfunction "Get Volume Number")
  6469.  03h    BYTE    length of volume name (01h-10h)
  6470.  04h  N BYTEs    volume name
  6471. SeeAlso: #01853,#02113 at AX=F216h/SF=05h
  6472.  
  6473. Format of NetWare "Get Volume Number" reply buffer:
  6474. Offset    Size    Description    (Table 01853)
  6475.  00h    WORD    (call) 0001h (length of following results buffer)
  6476.  02h    BYTE    volume number
  6477. SeeAlso: #01852,#02113 at AX=F216h/SF=05h
  6478. --------N-21E2--SF06-------------------------
  6479. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
  6480.     AH = E2h subfn 06h
  6481.     DS:SI -> request buffer (see #01854)
  6482.     ES:DI -> reply buffer (see #01855)
  6483. Return: AL = status (00h,98h) (see #01839)
  6484. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6485.       Alloy NTNX
  6486. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
  6487. SeeAlso: AH=E3h/SF=E9h,AX=F216h/SF=06h
  6488.  
  6489. Format of NetWare "Get Volume Name" request buffer:
  6490. Offset    Size    Description    (Table 01854)
  6491.  00h    WORD    0002h (length of following data)
  6492.  02h    BYTE    06h (subfunction "Get Volume Name")
  6493.  03h    BYTE    volume number
  6494. SeeAlso: #01855,#02114 at AX=F216h/SF=06h
  6495.  
  6496. Format of NetWare "Get Volume Name" reply buffer:
  6497. Offset    Size    Description    (Table 01855)
  6498.  00h    WORD    (call) 0011h (length of following results buffer)
  6499.  02h    BYTE    length of volume name
  6500.  03h 16 BYTEs    NUL-padded volume name
  6501. SeeAlso: #01854,#02114 at AX=F216h/SF=06h
  6502. --------N-21E2--SF0A-------------------------
  6503. INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
  6504.     AH = E2h subfn 0Ah
  6505.     DS:SI -> request buffer (see #01856)
  6506.     ES:DI -> reply buffer (see #01857)
  6507. Return: AL = status (00h,84h,98h,FCh) (see #01839)
  6508. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6509.       Alloy NTNX
  6510. SeeAlso: AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh,AX=F216h/SF=0Ah
  6511.  
  6512. Format of NetWare "Create Directory" request buffer:
  6513. Offset    Size    Description    (Table 01856)
  6514.  00h    WORD    length of following data (max 103h)
  6515.  02h    BYTE    0Ah (subfunction "Create Directory")
  6516.  03h    BYTE    directory handle
  6517.  04h    BYTE    maximum directory rights (see #01849)
  6518.  05h    BYTE    length of directory path (00h-FFh)
  6519.  06h  N BYTEs    directory path
  6520. SeeAlso: #01857,#01858
  6521.  
  6522. Format of NetWare reply buffer:
  6523. Offset    Size    Description    (Table 01857)
  6524.  00h    WORD    (call) 0000h (no data returned)
  6525. SeeAlso: #01856,#01858
  6526. --------N-21E2--SF0B-------------------------
  6527. INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
  6528.     AH = E2h subfn 0Bh
  6529.     DS:SI -> request buffer (see #01858)
  6530.     ES:DI -> reply buffer (see #01857)
  6531. Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see #01839)
  6532. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6533.       Alloy NTNX
  6534. SeeAlso: AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh,AX=F216h/SF=0Bh
  6535.  
  6536. Format of NetWare "Delete Directory" request buffer:
  6537. Offset    Size    Description    (Table 01858)
  6538.  00h    WORD    length of following data (max 103h)
  6539.  02h    BYTE    0Bh (subfunction "Delete Directory")
  6540.  03h    BYTE    directory handle
  6541.  04h    BYTE    unused
  6542.  05h    BYTE    length of directory path (00h-FFh)
  6543.  06h  N BYTEs    directory path
  6544. SeeAlso: #01856,#01857
  6545. --------N-21E2--SF0C-------------------------
  6546. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
  6547.     AH = E2h subfn 0Ch
  6548.     DS:SI -> request buffer (see #01859)
  6549.     ES:DI -> reply buffer (see #01860)
  6550. Return: AL = status (00h,9Ch) (see also #01839)
  6551.         9Ch no more trustees
  6552. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  6553. SeeAlso: AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Ch
  6554.  
  6555. Format of NetWare "Scan Directory For Trustees" request buffer:
  6556. Offset    Size    Description    (Table 01859)
  6557.  00h    WORD    length of following data (max 103h)
  6558.  02h    BYTE    0Ch (subfunction "Scan Directory For Trustees")
  6559.  03h    BYTE    directory handle
  6560.  04h    BYTE    sequence number
  6561.         00h on first call, increment for each subsequent call
  6562.  05h    BYTE    length of directory path (00h-FFh)
  6563.  06h  N BYTEs    directory path
  6564. SeeAlso: #01860,#01861,#02115 at AX=F216h/SF=0Ch
  6565.  
  6566. Format of NetWare "Scan Directory For Trustees" reply buffer:
  6567. Offset    Size    Description    (Table 01860)
  6568.  00h    WORD    (call) 0031h (length of following results buffer)
  6569.  02h 16 BYTEs    directory name
  6570.  12h  4 BYTEs    date and time of creation
  6571.  16h    DWORD    (big-endian) object ID of owner
  6572.  1Ah  5 DWORDs    (big-endian) object IDs of Trustees 0 through 4
  6573.         00000000h = end of group
  6574.  2Eh  5 BYTEs    directory rights for Trustees 0 through 4 (see #01849)
  6575. SeeAlso: #01859,#01863,#02115 at AX=F216h/SF=0Ch
  6576. --------N-21E2--SF0D-------------------------
  6577. INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
  6578.     AH = E2h subfn 0Dh
  6579.     DS:SI -> request buffer (see #01861)
  6580.     ES:DI -> reply buffer (see #01863)
  6581. Return: AL = status (00h,8Ch,FCh) (see #01839)
  6582. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6583.       Alloy NTNX
  6584. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Dh
  6585.  
  6586. Format of NetWare "Add Trustee To Directory" request buffer:
  6587. Offset    Size    Description    (Table 01861)
  6588.  00h    WORD    length of following data (max 107h)
  6589.  02h    BYTE    0Dh (subfunction "Add Trustee To Directory")
  6590.  03h    BYTE    directory handle
  6591.  04h    DWORD    (big-endian) object ID of trustee
  6592.  08h    BYTE    trustee directory rights (see #01849)
  6593.  09h    BYTE    length of directory path (00h-FFh)
  6594.  0Ah  N BYTEs    directory path
  6595. SeeAlso: #01863
  6596. --------N-21E2--SF0E-------------------------
  6597. INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
  6598.     AH = E2h subfn 0Eh
  6599.     DS:SI -> request buffer (see #01862)
  6600.     ES:DI -> reply buffer (see #01863)
  6601. Return: AL = status (00h,98h,9Bh,9Ch) (see #01839)
  6602. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6603.       Alloy NTNX
  6604. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AX=F216h/SF=0Eh
  6605.  
  6606. Format of NetWare "Delete Trustee From Directory" request buffer:
  6607. Offset    Size    Description    (Table 01862)
  6608.  00h    WORD    length of following data (max 107h)
  6609.  02h    BYTE    0Eh (subfunction "Delete Trustee From Directory")
  6610.  03h    BYTE    directory handle
  6611.  04h    DWORD    (big-endian) object ID of trustee
  6612.  08h    BYTE    unused
  6613.  09h    BYTE    length of directory path (00h-FFh)
  6614.  0Ah  N BYTEs    directory path
  6615. SeeAlso: #01863
  6616.  
  6617. Format of NetWare reply buffer:
  6618. Offset    Size    Description    (Table 01863)
  6619.  00h    WORD    (call) 0000h (no data returned)
  6620. SeeAlso: #01862,#01864,#01865
  6621. --------N-21E2--SF0F-------------------------
  6622. INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
  6623.     AH = E2h subfn 0Fh
  6624.     DS:SI -> request buffer (see #01864)
  6625.     ES:DI -> reply buffer (see #01863)
  6626. Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see #01839)
  6627. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6628.       Alloy NTNX
  6629.     directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
  6630. SeeAlso: AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh,AX=F216h/SF=0Fh
  6631.  
  6632. Format of NetWare "Rename Directory" request buffer:
  6633. Offset    Size    Description    (Table 01864)
  6634.  00h    WORD    length of following data (max 111h)
  6635.  02h    BYTE    0Fh (subfunction "Rename Directory")
  6636.  03h    BYTE    directory handle
  6637.  04h    BYTE    length of directory path (00h-FFh)
  6638.  05h  N BYTEs    directory path
  6639.     BYTE    length of new directory name (01h-0Eh)
  6640.       N BYTEs    new directory name
  6641. SeeAlso: #01863
  6642. --------N-21E2--SF10-------------------------
  6643. INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
  6644.     AH = E2h subfn 10h
  6645.     DS:SI -> request buffer (see #01865)
  6646.     ES:DI -> reply buffer (see #01863)
  6647. Return: AL = status (00h,C6h) (see #01866)
  6648. Desc:    purges files marked for deletion on the file server by the calling
  6649.       workstation
  6650. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6651.       Alloy NTNX
  6652. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h,AX=F216h/SF=10h
  6653.  
  6654. Format of NetWare "Purge Erased Files" request buffer:
  6655. Offset    Size    Description    (Table 01865)
  6656.  00h    WORD    0001h (length of following data)
  6657.  02h    BYTE    10h (subfunction "Purge Erased Files")
  6658. SeeAlso: #01863
  6659. --------N-21E2--SF11-------------------------
  6660. INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
  6661.     AH = E2h subfn 11h
  6662.     DS:SI -> request buffer (see #01867)
  6663.     ES:DI -> reply buffer (see #01868)
  6664. Return: AL = status (00h,98h,FFh) (see #01866)
  6665. Desc:    restores one file marked for deletion which has not yet been purged
  6666. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6667.       Alloy NTNX
  6668. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h
  6669.  
  6670. (Table 01866)
  6671. Values for NetWare function status:
  6672.  00h    successful
  6673.  98h    nonexistent volume
  6674.  9Ch    invalid path
  6675.  C6h    no console rights
  6676.  FFh    no more erased files
  6677. SeeAlso: #01839,#01899
  6678.  
  6679. Format of NetWare "Restore Erased File" request buffer:
  6680. Offset    Size    Description    (Table 01867)
  6681.  00h    WORD    length of following data (max 13h)
  6682.  02h    BYTE    11h (subfunction "Restore Erased File")
  6683.  03h    BYTE    directory handle or 00h
  6684.  04h    BYTE    length of volume name
  6685.  05h  N BYTEs    volume name (including colon)
  6686. Note:    if both a directory handle and a volume name are specified, the volume
  6687.       name overrides the handle
  6688. SeeAlso: #01868,#02116
  6689.  
  6690. Format of NetWare "Restore Erased File" reply buffer:
  6691. Offset    Size    Description    (Table 01868)
  6692.  00h    WORD    (call) 001Eh (size of following results buffer)
  6693.  02h 15 BYTEs    ASCIZ name of erased file
  6694.  11h 15 BYTEs    ASCIZ name under which file was restored
  6695. SeeAlso: #01867,#02116
  6696. --------N-21E2--SF12-------------------------
  6697. INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
  6698.     AH = E2h subfn 12h
  6699.     DS:SI -> request buffer (see #01869)
  6700.     ES:DI -> reply buffer (see #01870)
  6701. Return: AL = status (00h,98h,9Ch) (see #01866)
  6702. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6703.       Alloy NTNX
  6704. SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=12h
  6705.  
  6706. Format of NetWare "Allocate Permanent Directory Handle" request buffer:
  6707. Offset    Size    Description    (Table 01869)
  6708.  00h    WORD    length of following data (max 103h)
  6709.  02h    BYTE    12h (subfunction "Allocate Permanent Directory Handle")
  6710.  03h    BYTE    directory handle
  6711.  04h    BYTE    drive ('A'-'Z')
  6712.  05h    BYTE    length of directory path
  6713.  06h  N BYTEs    directory path
  6714. SeeAlso: #01870,#01871,#02118
  6715.  
  6716. Format of NetWare reply buffer:
  6717. Offset    Size    Description    (Table 01870)
  6718.  00h    WORD    (call) 0002h (size of following results buffer)
  6719.  02h    BYTE    new directory handle
  6720.  03h    BYTE    effective directory rights (see #01849)
  6721. SeeAlso: #01869,#02118
  6722. --------N-21E2--SF13-------------------------
  6723. INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
  6724.     AH = E2h subfn 13h
  6725.     DS:SI -> request buffer (see #01871)
  6726.     ES:DI -> reply buffer (see #01870)
  6727. Return: AL = status (00h,98h,9Ch) (see #01866)
  6728. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6729.       Alloy NTNX
  6730.     this call is the same as AH=E2h/SF=12h except that the directory handle
  6731.       will be automatically deallocated when the calling application
  6732.       executes an End of Job call (AH=D6h) or terminates
  6733. SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
  6734. SeeAlso: AX=F216h/SF=13h
  6735.  
  6736. Format of NetWare "Allocate Temporary Directory Handle" request buffer:
  6737. Offset    Size    Description    (Table 01871)
  6738.  00h    WORD    length of following data (max 103h)
  6739.  02h    BYTE    13h (subfunction "Allocate Temporary Directory Handle")
  6740.  03h    BYTE    directory handle
  6741.  04h    BYTE    drive ('A'-'Z')
  6742.  05h    BYTE    length of directory path
  6743.  06h  N BYTEs    directory path
  6744. SeeAlso: #01869,#01872
  6745. --------N-21E2--SF14-------------------------
  6746. INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
  6747.     AH = E2h subfn 14h
  6748.     DS:SI -> request buffer (see #01872)
  6749.     ES:DI -> reply buffer (see #01873)
  6750. Return: AL = status (00h,9Bh) (see #01839)
  6751. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6752.       Alloy NTNX
  6753. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=14h
  6754.  
  6755. Format of NetWare "Deallocate Directory Handle" request buffer:
  6756. Offset    Size    Description    (Table 01872)
  6757.  00h    WORD    0002h (length of following data)
  6758.  02h    BYTE    14h (subfunction "Deallocate Directory Handle")
  6759.  03h    BYTE    directory handle
  6760. SeeAlso: #01873
  6761.  
  6762. Format of NetWare reply buffer:
  6763. Offset    Size    Description    (Table 01873)
  6764.  00h    WORD    (call) 0000h (no returned data)
  6765. SeeAlso: #01872
  6766. --------N-21E2--SF15-------------------------
  6767. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
  6768.     AH = E2h subfn 15h
  6769.     DS:SI -> request buffer (see #01874)
  6770.     ES:DI -> reply buffer (see #01875)
  6771. Return: AL = status
  6772.         00h successful
  6773. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6774.       Alloy NTNX
  6775. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
  6776. SeeAlso: AX=F216h/SF=15h
  6777.  
  6778. Format of NetWare "Get Volume Info with Handle" request buffer:
  6779. Offset    Size    Description    (Table 01874)
  6780.  00h    WORD    0002h (length of following data)
  6781.  02h    BYTE    15h (subfunction "Get Volume Info With Handle")
  6782.  03h    BYTE    directory handle
  6783. SeeAlso: #01875,#02119
  6784.  
  6785. Format of NetWare "Get Volume Info with Handle" reply buffer:
  6786. Offset    Size    Description    (Table 01875)
  6787.  00h    WORD    (call) 001Ch (length of following results buffer)
  6788.  02h    WORD    (big-endian) sectors per block
  6789.  04h    WORD    (big-endian) total blocks on volume
  6790.  06h    WORD    (big-endian) blocks available on volume
  6791.  08h    WORD    (big-endian) total directory slots
  6792.  0Ah    WORD    (big-endian) directory slots available
  6793.  0Ch 16 BYTEs    NUL-padded volume name
  6794.  1Ch    WORD    (big-endian) flag: volume removable if nonzero
  6795. SeeAlso: #01874,#02119
  6796. --------N-21E2--SF16-------------------------
  6797. INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
  6798.     AH = E2h subfn 16h
  6799.     DS:SI -> request buffer (see #01876)
  6800.     ES:DI -> reply buffer (see #01873)
  6801. Return: AL = status
  6802. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
  6803.       but is not described in _NetWare_System_Calls--DOS_
  6804. SeeAlso: AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=16h
  6805.  
  6806. Format of NetWare "Alloc Special Temporary Directory Handle" request buffer:
  6807. Offset    Size    Description    (Table 01876)
  6808.  00h    WORD    length of following data
  6809.  02h    BYTE    16h (subfunction "Allocate Special Temporary Directory Handle")
  6810.  03h    BYTE    source directory handle
  6811.  04h    BYTE    drive name ('A'-'Z')
  6812.  05h    BYTE    path length
  6813.  06h  N BYTEs    directory path
  6814. SeeAlso: #01873
  6815. --------N-21E2--SF17-------------------------
  6816. INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
  6817.     AH = E2h subfn 17h
  6818.     DS:SI -> request buffer (see #01877)
  6819.     ES:DI -> reply buffer (see #01878)
  6820. Return: AL = status
  6821.         00h successful
  6822.         else network error code
  6823. Note:    this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
  6824. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=17h
  6825.  
  6826. Format of NetWare "Save Directory Handle" request buffer:
  6827. Offset    Size    Description    (Table 01877)
  6828.  00h    WORD    0002h (length of following data)
  6829.  02h    BYTE    17h (subfunction "Save Directory Handle")
  6830.  03h    BYTE    directory handle
  6831. SeeAlso: #01878,#01879
  6832.  
  6833. Format of NetWare "Save Directory Handle" reply buffer:
  6834. Offset    Size    Description    (Table 01878)
  6835.  00h    WORD    (call) 0010h (length of following results buffer)
  6836.  02h 16 BYTEs    save buffer
  6837. SeeAlso: #01877,#01880
  6838. --------N-21E2--SF18-------------------------
  6839. INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
  6840.     AH = E2h subfn 18h
  6841.     DS:SI -> request buffer (see #01879)
  6842.     ES:DI -> reply buffer (see #01880)
  6843. Return: AL = status
  6844.         00h successful
  6845.         else network error code
  6846. Desc:    restore a previously saved directory handle to reproduce an executing
  6847.       environment, possibly on a different execution site
  6848. Note:    this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
  6849. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=18h
  6850.  
  6851. Format of NetWare "Restore Directory Handle" request buffer:
  6852. Offset    Size    Description    (Table 01879)
  6853.  00h    WORD    0011h (length of following data)
  6854.  02h    BYTE    18h (subfunction "Restore Directory Handle")
  6855.  03h 16 BYTEs    save buffer
  6856. SeeAlso: #01877,#01880
  6857.  
  6858. Format of NetWare "Restore Directory Handle" reply buffer:
  6859. Offset    Size    Description    (Table 01880)
  6860.  00h    WORD    (call) 0002h (length of following results buffer)
  6861.  02h    BYTE    new directory handle
  6862.  03h    BYTE    effective rights (see #01849)
  6863. SeeAlso: #01879
  6864. --------N-21E2--SF19-------------------------
  6865. INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
  6866.     AH = E2h subfn 19h
  6867.     DS:SI -> request buffer (see #01881)
  6868.     ES:DI -> reply buffer (see #01882)
  6869. Return: AL = status (00h,9Bh,9Ch) (see #01839)
  6870. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  6871. SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=0Fh,AX=F216h/SF=19h
  6872.  
  6873. Format of NetWare "Set Directory Information" request buffer:
  6874. Offset    Size    Description    (Table 01881)
  6875.  00h    WORD    length of following data (max 10Bh)
  6876.  02h    BYTE    19h (subfunction "Set Directory Information")
  6877.  03h    BYTE    directory handle
  6878.  04h    DWORD    (big-endian) date and time of creation
  6879.  08h    DWORD    (big-endian) object ID of owner
  6880.  0Ch    BYTE    maximum directory rights (see #01849)
  6881.  0Dh    BYTE    length of directory path
  6882.  0Eh  N BYTEs    directory path
  6883. SeeAlso: #01882
  6884.  
  6885. Format of NetWare reply buffer:
  6886. Offset    Size    Description    (Table 01882)
  6887.  00h    WORD    (call) 0000h (no results returned)
  6888. SeeAlso: #01881
  6889. --------N-21E2--SF1A-------------------------
  6890. INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
  6891.     AH = E2h subfn 1Ah
  6892.     DS:SI -> request buffer (see #01883)
  6893.     ES:DI -> reply buffer (see #01884)
  6894. Return: AL = status
  6895.         00h successful
  6896. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6897.       Alloy NTNX
  6898. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h,AX=F216h/SF=1Ah
  6899.  
  6900. Format of NetWare "Get Path from Directory Entry" request buffer:
  6901. Offset    Size    Description    (Table 01883)
  6902.  00h    WORD    0004h (length of following data)
  6903.  02h    BYTE    1Ah (subfunction "Get Path From Directory Entry")
  6904.  03h    BYTE    volume number (00h-1Fh)
  6905.  04h    WORD    (big-endian) directory entry number
  6906. SeeAlso: #01884,#02122
  6907.  
  6908. Format of NetWare "Get Path from Directory Entry" reply buffer:
  6909. Offset    Size    Description    (Table 01884)
  6910.  00h    WORD    (call) size of following results record (max 200h)
  6911.  02h 256 BYTEs    path
  6912. SeeAlso: #01883,#02122
  6913. --------!---Section--------------------------
  6914.